【问题标题】:Parse string to Json - JSON.Parse将字符串解析为 Json - JSON.Parse
【发布时间】:2017-06-16 11:27:50
【问题描述】:

存储在数据库中的字符串(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"}")

==> 不工作(我试图解析的字符串具有这种带双引号的格式)

==> obj.requiredParam 返回未定义

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

==> 有效

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

【问题讨论】:

  • 你如何在 C# 中设置param?原始 HTML 是什么样的?

标签: javascript asp.net json parsing razor


【解决方案1】:

试试这个:

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

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

如何使用正则表达式转义 "。

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

【讨论】:

  • requiredParam 返回“未定义”,因为解析不起作用,这正是问题所在
  • 对不起.. 已编辑答案请检查
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我假设你的 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-31
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多