【问题标题】:how to access one name value pair from a JSON object如何从 JSON 对象访问一个名称值对
【发布时间】:2011-05-12 23:53:08
【问题描述】:

假设我有这个 JSON 对象通过服务器传回

JavascriptSerializer oSer = new JavascriptSerializer();
string sJson = oSer.Serialize(myObject);

我通过 ajax 调用返回给我的客户的 json 是

"{\"IsValid\":false,\"EmployeeId\":null,\"fullName\":\"a\",\"EmailAddress\":\"n/a\",\"PhoneNumber\":\"n/a\"}"

所以$.parseJSON(result);之后

是否可以只检索 IsValid 值而不遍历整个对象名称/值对?

更新: 似乎当 json 到达客户端时 : 在名称值对之间变为 = 。所以现在我必须弄清楚如何用 : 替换 = ,这样我就可以像真正的对象属性符号一样解析和访问它。

success: function (data)
                    {
                        data.replace("=", ":");
                    }

没用。

我也将 ajax dataType 属性设置为 'json'

【问题讨论】:

    标签: c# jquery json


    【解决方案1】:

    您不必遍历每个字段 - 只需将其作为来自 parseJSON 的结果的直接属性访问即可。

    var obj = $.parseJSON(result);
    alert(obj.IsValid);
    

    【讨论】:

    • 仅适用于从服务器传回的 json 字符串。当您通过 C# 序列化一个 OBJECT 时,您会返回 OBJECT OBJECT 类型。我发现的唯一一件事是使用 $.each() 来获取名称/值对
    【解决方案2】:
    var myObj = $.parseJSON(result);
    myObj.IsValid
    

    确保你的结果用引号括起来,单引号就OK了。

    【讨论】:

    • 它们在代码中,我只是没有将它们粘贴到问题中
    【解决方案3】:

    当然:

    var obj = jQuery.parseJSON(result);
    alert(obj.IsValid);
    

    【讨论】:

      【解决方案4】:

      我发现了问题。在

        $.ajax(
              {
                  type: "POST",
                  data: "myJson=" + jsonData,
                  url: "/myURL",
                  success: function (result)
                  {
                     //some code
                  }
               });
      

      我有 dataType: 'json' 这就是从服务转换我正确配置的 JSON 的原因

      【讨论】:

        猜你喜欢
        • 2012-06-09
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        相关资源
        最近更新 更多