如何遍历JSON文件?

时间:2011-10-03 05:46:02

标签: java javascript json jsonp

我的JSON如下所述: -

{   head: {
    link: [],
    vars: [
      "CompanyName",
      "Company_Name",
      "Foundation_URI",
      "Foundation_Name",
      "Latitude",
      "Longitude"
    ]   },   results: {
    distinct: false,
    ordered: true,
    bindings: [
      {
        CompanyName: {
          type: "uri",
          value: "http://dbpedia.org/resource/United_Christian_Broadcasters"
        },
        Company_Name: {
          type: "literal",
          xml:lang: "en",
          value: "United Christian Broadcasters"
        },
        Foundation_URI: {
          type: "uri",
          value: "http://dbpedia.org/resource/Christchurch"
        },
        Foundation_Name: {
          type: "literal",
          xml:lang: "en",
          value: "Christchurch"
        },
        Latitude: {
          type: "typed-literal",
          datatype: "http://www.w3.org/2001/XMLSchema#float",
          value: "-43.52999877929688"
        },
        Longitude: {
          type: "typed-literal",
          datatype: "http://www.w3.org/2001/XMLSchema#float",
          value: "172.6202850341797"
        }
      },
      {
        CompanyName: {
          type: "uri",
          value: "http://dbpedia.org/resource/United_Christian_Broadcasters"
        },
        Company_Name: {
          type: "literal",
          xml:lang: "en",
          value: "UCB Media"
        },
        Foundation_URI: {
          type: "uri",
          value: "http://dbpedia.org/resource/Christchurch"
        },
        Foundation_Name: {
          type: "literal",
          xml:lang: "en",
          value: "Christchurch"
        },
        Latitude: {
          type: "typed-literal",
          datatype: "http://www.w3.org/2001/XMLSchema#float",
          value: "-43.52999877929688"
        },
        Longitude: {
          type: "typed-literal",
          datatype: "http://www.w3.org/2001/XMLSchema#float",
          value: "172.6202850341797"
        }
      },
      {
        CompanyName: {
          type: "uri",
          value: "http://dbpedia.org/resource/Kathmandu_%28company%29"
        },
        Company_Name: {
          type: "literal",
          xml:lang: "en",
          value: "Kathmandu"
        },
        Foundation_URI: {
          type: "uri",
          value: "http://dbpedia.org/resource/Christchurch"
        },
        Foundation_Name: {
          type: "literal",
          xml:lang: "en",
          value: "Christchurch"
        },
        Latitude: {
          type: "typed-literal",
          datatype: "http://www.w3.org/2001/XMLSchema#float",
          value: "-43.52999877929688"
        },
        Longitude: {
          type: "typed-literal",
          datatype: "http://www.w3.org/2001/XMLSchema#float",
          value: "172.6202850341797"
        }
      }
    ]   } }

我想知道如何遍历此JSON以获取JSON文件中提到的相应变量的值。关于JavaScript和Java,我想知道这一点。请告诉我如何遍历此JSON以便轻松获取数据。

4 个答案:

答案 0 :(得分:1)

这不是JSON字符串,但幸运的是YAML标准格式。

您可以使用YAML库来横切类似jSON的字符串

答案 1 :(得分:0)

这是一个相当简单的树遍历例程:

function traverse(o) {
  if( o instanceof Object ) {
    for( key in o ) {
      traverse(o[key]);
    }
  }
  else if( o instanceof Array ) {
    for( value in o ) {
      traverse(value);
    }
  }
  else {
    console.log(o);
  }
}
var q = { name : 'me', data : [ { a: 'a1', b: 'b1' }, { a: 'a2', b: 'b2'} ] };
traverse(q);

但是,我认为这不是你想要的。请澄清,我会相应地更新我的答案。

答案 2 :(得分:0)

以下是JSON对象的简单遍历,这应该可以帮助您低估JSON对象的正常遍历。查看https://github.com/substack/js-traverse链接,了解有关任何javascript对象的复杂遍历的详细教程

<script language="javascript"> 

var emp = {"details" : [
             {
             "Name" : "Nitin1",
             "Salary" : 10000, 
             "DOJ" : "16th Sept 2010"
             }
            ,

             {"Name" : "Abhijit2", 
             "Salary" : 5000, 
             "DOJ" : "15th Sept 2010"}
            ,

             {"Name" : "Nilesh", 
             "Salary" : 50000, 
             "DOJ" : "10th Sept 2010"}

            ]
    };

document.writeln("<table border='1'><tr><td>Name</td><td>Salary</td><td>DOJ</td></tr>");
var i=0;
for(i=0;i<emp.details.length; i++)
{
  document.writeln("<tr><td>" + emp.details[i].Name + "</td>");
  document.writeln("<td>" + emp.details[i].Salary +"</td>");
  document.writeln("<td>" + emp.details[i].DOJ +"</td></tr>");
}
document.writeln("</table>");


</script>

答案 3 :(得分:0)

如果您只想检索特定值 - 则不需要遍历整个JSON文件。

这可以在Javascript中完成,如下所示:

声明JSON变量:

var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

获取特定值:

myJSONObject.bindings[0].method    // "newURI"

如需完整参考,请访问here

我自己不使用Java,但XML.java(可用文档here)允许您将JSON转换为XML。解析XML非常简单 - 您可以在Java上找到大量有关Java的教程,例如:

http://www.seas.gwu.edu/~simhaweb/java/xml/xml.html

干杯!