将字符串解析为Json - JSON.Parse

时间:2017-06-16 11:27:50

标签: javascript asp.net json parsing razor

存储在DB中的字符串(Json格式):

{"requiredParam":"value"}

(Razor)从模型中获取字符串:

<a id="link-test" asp-controller="TestController" asp-action="TestAction">@model.param</a>

解析为JSON:

<script>
var obj = JSON.Parse(document.getElementById("link-test").innerHTML);
var requiredParam = obj.requiredParam;
</script>

使用JSfiddle显示:

JSON.Parse("{"required.Param":"value"}")

==&GT;不工作(我试图解析的字符串具有双引号格式)

==&GT; obj.requiredParam返回undefined

JSON.Parse('{"required.Param":"value"}')

==&GT;作品

主要目的是使用obj.requiredParam 有什么建议吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

JSON.Parse('{"'+required.Param+'":"'+value+'"}')

编辑:我没有正确理解这个问题。道歉。

你怎么能逃脱&#34;使用正则表达式。

var str = document.getElementById("link-test").innerHTML;
str = str.replace(/"/g, '\\"');
var obj = JSON.Parse(str);
var requiredParam = obj.requiredParam;

答案 1 :(得分:0)

解决方案是使用JObject.Parse和GetValue如下:

<a id="demo" asp-controller="Demo" asp-action="Demo">@Newtonsoft.Json.Linq.JObject.Parse(model.RequiredParam).GetValue("requiredParam")</a>

答案 2 :(得分:0)

我认为你的html看起来像这样

<div id="link-test">{"requiredParam":"value"}</div>

首先用String.replace替换引号,然后只需解析它就可以从中获取json对象

var elem = document.getElementById("link-test").innerHTML;
var obj = JSON.parse(elem.replace(/"/g, '\"'));
console.log(obj.requiredParam);

小提琴https://jsfiddle.net/uyf9egxq/