如何在javascript中从JSON对象中检索值

时间:2012-03-19 09:06:34

标签: javascript json

  

可能重复:
  How can i get values from json and display them in javascript

我有一个JSON字符串,它将包含SOAP Message内容。这是我的JSON字符串:

{
   "xml":{

   },
   "SOAP-ENV:Envelope":{
      "@attributes":"....."
   },
   "SOAP-ENV:Body":{
      "@attributes":{
         "bill":{
            "customerDetil":{
               "customerFirstName":{
                  "#text":"Mahes"
               }
            }
         }
      }
   }
}

这就是我在javascript中所做的事情:

var jsonText = xmlToJson(xmlhttp.responseXML);
             var myjson = JSON.stringify(jsonText);
                alert("JSON"+myjson);

function xmlToJson(xml) {
      // Create the return object;
      var obj = {};

      if (xml.nodeType == 1) {

        if (xml.attributes.length > 0) {
        obj["@attributes"] = {};
          for (var j = 0; j < xml.attributes.length; j++) {
            var attribute = xml.attributes.item(j);
            obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
          }
        }
      } else if (xml.nodeType == 3) {
        obj = xml.nodeValue;
      }

      if (xml.hasChildNodes()) {
        for(var i = 0; i < xml.childNodes.length; i++) {
          var item = xml.childNodes.item(i);
          var nodeName = item.nodeName;
          if (typeof(obj[nodeName]) == "undefined") {
            obj[nodeName] = xmlToJson(item);
          } else {
            if (typeof(obj[nodeName].length) == "undefined") {
              var old = obj[nodeName];
              obj[nodeName] = [];
              obj[nodeName].push(old);
            }
            obj[nodeName].push(xmlToJson(item));
          }
        }
      }
      return obj;
    };

请告诉我如何从javascript中的JSON字符串中检索每个值。例如CustomerFirstName

谢谢, 纳拉亚南

3 个答案:

答案 0 :(得分:3)

好吧,你有一个JSON 字符串或一个Javascript 对象。没有“JSON对象”这样的东西--JSON是用于编码Javascript对象的字符串表示法。

如果您有一个JSON字符串,则需要将其转换为Javascript对象 - 搜索SO以获取大量示例。

如果您有Javascript对象,则可以通过点表示法或数组表示法访问属性。 E.g。

var obj = { 'foo' : 'bar', 'foo2' : { 'foo3' : 'bar2' }};

obj.foo; // 'bar';
obj['foo']; // 'bar';
obj.foo2['foo3']; // 'bar2';

答案 1 :(得分:1)

首先解析JSON字符串:

var msgs = JSON.parse(json);

由于JSON字符串只是字典/关联数组,您可以通过执行以下操作来获取javascript中的值:

var value = msgs["key"];

在你的情况下,似乎值嵌套在多个词典中,所以可能是这样的:

var customerName = msgs["SOAP-ENV:Body"]["@attributes"]["bill"]["customerDetil"]["customerFirstName"];

答案 2 :(得分:0)

请浏览json.orgjson guide。这可能会对你有所帮助