Javascript 读取嵌套的 Json 项
Javascript to read nested Json items
我有一个 JSON,我想使用 Javascript 阅读标题和项目内的 link。
{
"rss": {
"version": "2.0",
"content": "http://purl.org/rss/1.0/modules/content/",
"channel": {
"title": " National",
"pubDate": "Mon, 06 Jul 2015 10:56:29 +1000",
"lastBuildDate": "Mon, 06 Jul 2015 10:56:29 +1000",
"generator": "news_national_3354",
"ttl": "5",
"item": [
{
"title": "Australia’s biggest housing demolition begins",
"link": "http://www.news.com.au/lifestyle/health/mr-fluffy-housing-demolitions-begin/story-fneuzlbd-1227430208115?from=public_rss",
},
{
"title": "Barnaby Joyce pulls out of Q&A",
"link": "http://www.news.com.au/national/barnaby-joyce-pulls-out-of-scheduled-qa-appearance/story-fncynjr2-1227429015164?from=public_rss",
},
{
"title": "Children who murder parents",
"link": "http://www.news.com.au/national/crime/one-parent-is-killed-a-month-by-their-child-crime-statistics-reveal/story-fns0kb1g-1227428117585?from=public_rss",
}
]
}
}
}
我不想使用 PHP。我正在从不同的域服务器读取 Xml,我得到 Cross Domain Error
。我找到了 this 将 xml 转换为 JSON 的解决方案。我能够从不同的域读取 xml 并将其作为 JSON。这个解决方案是否足够有效以用于实时项目,或者我不应该使用 Javascript 从不同的服务器获取 XML。请在这个问题上给我建议。谢谢
您必须首先使用 JSON.parse 将 JSON 转换为 JS 对象:
var obj = JSON.parse(data);
他们可以正常走入对象:
var title = obj.rss.channel.title;
var link = obj.rss.content;
将 JSON 响应设置为变量(下例中的 data
)后,您可以解析 JSON,然后像使用任何其他变量一样使用它 JavaScript 对象。示例:
var response = JSON.parse(data);
var items = response.rss.channel.item;
for (var i = 0; i < items.length; i++) {
console.log(items[i].title);
console.log(items[i].link);
}
"efficiency" 的问题有些争议,因为问题是 "efficiency" 是什么意思?
获取 JSON 是否比 XML 更有效?绝对是的。 JSON 根据它的定义更适合 javascript 因为...好吧让我们看一下名称:
javascript object nation
与此同时,关于客户端方面几乎没有什么可考虑的。如前所述 here 还有更重要的方面需要考虑,即:
a) 使用 HTTP 压缩
b) 优化查询标记
In my humble opinion what makes JSON the natural choice for a lot of
applications is not its inherent qualities, though real as
demonstrated in the above article, but its strong integration into the
web ecosystem because JSON is the native way of representing
JavaScript objects trees.
这里没有什么要补充的。这个问题主要涉及你从哪里获取信息。 Javascript 在客户端运行,因此解析它并将其转换为 JSON 并不是真正的问题。尽管如果直接使用 JSON 您可以删除该解析。但是在这种情况下使用 XML 是完全没问题的,事实上这正是创建它的原因,所以它绝对是一个可行的选择。最后归结为性能和可伸缩性对您有多重要的问题。如果您从一开始就将服务设置为交付 JSON,那么如果您想要扩展,这对您来说会更容易,因为我认为生成 XML 更加困难,更不用说了需要解析它 anyway.But 故意向您展示两个相互矛盾的观点,我可以添加 third one 总结数据存储的差异(这些天很少成为问题,同样只有在大型项目中) 并且在其他情况下几乎没有区别:
Winner: JSON without compression; With compression, minor gain by
using JSON
但是,如果您没有遇到数以万计的请求和臃肿的客户端 javascript 应用程序,那么它对您来说几乎没有任何区别。即使是这样,压缩它也比选择一个重要得多。
我会重复我之前说过的话,JSON 和 XML 都是为了完全相同的目的而创建的——数据序列化。因此,它们无论如何都是可以互换的,而且绝对都是有效的解决方案。但是,仅考虑您的项目将扩展多少,即便如此,这在很大程度上与个人喜好有关。
至于跨域 REST 之类的,请查看 CORS。
如果您收到JSON
数据,则不必转换为JSON
,只需读取即可。
var items = data.rss.channel.item;
for (var i = 0; i < items.length; i++) {
console.log(items[i].title);
console.log(items[i].link);
}
我有一个 JSON,我想使用 Javascript 阅读标题和项目内的 link。
{
"rss": {
"version": "2.0",
"content": "http://purl.org/rss/1.0/modules/content/",
"channel": {
"title": " National",
"pubDate": "Mon, 06 Jul 2015 10:56:29 +1000",
"lastBuildDate": "Mon, 06 Jul 2015 10:56:29 +1000",
"generator": "news_national_3354",
"ttl": "5",
"item": [
{
"title": "Australia’s biggest housing demolition begins",
"link": "http://www.news.com.au/lifestyle/health/mr-fluffy-housing-demolitions-begin/story-fneuzlbd-1227430208115?from=public_rss",
},
{
"title": "Barnaby Joyce pulls out of Q&A",
"link": "http://www.news.com.au/national/barnaby-joyce-pulls-out-of-scheduled-qa-appearance/story-fncynjr2-1227429015164?from=public_rss",
},
{
"title": "Children who murder parents",
"link": "http://www.news.com.au/national/crime/one-parent-is-killed-a-month-by-their-child-crime-statistics-reveal/story-fns0kb1g-1227428117585?from=public_rss",
}
]
}
}
}
我不想使用 PHP。我正在从不同的域服务器读取 Xml,我得到 Cross Domain Error
。我找到了 this 将 xml 转换为 JSON 的解决方案。我能够从不同的域读取 xml 并将其作为 JSON。这个解决方案是否足够有效以用于实时项目,或者我不应该使用 Javascript 从不同的服务器获取 XML。请在这个问题上给我建议。谢谢
您必须首先使用 JSON.parse 将 JSON 转换为 JS 对象:
var obj = JSON.parse(data);
他们可以正常走入对象:
var title = obj.rss.channel.title;
var link = obj.rss.content;
将 JSON 响应设置为变量(下例中的 data
)后,您可以解析 JSON,然后像使用任何其他变量一样使用它 JavaScript 对象。示例:
var response = JSON.parse(data);
var items = response.rss.channel.item;
for (var i = 0; i < items.length; i++) {
console.log(items[i].title);
console.log(items[i].link);
}
"efficiency" 的问题有些争议,因为问题是 "efficiency" 是什么意思?
获取 JSON 是否比 XML 更有效?绝对是的。 JSON 根据它的定义更适合 javascript 因为...好吧让我们看一下名称:
javascript object nation
与此同时,关于客户端方面几乎没有什么可考虑的。如前所述 here 还有更重要的方面需要考虑,即:
a) 使用 HTTP 压缩 b) 优化查询标记
In my humble opinion what makes JSON the natural choice for a lot of applications is not its inherent qualities, though real as demonstrated in the above article, but its strong integration into the web ecosystem because JSON is the native way of representing JavaScript objects trees.
这里没有什么要补充的。这个问题主要涉及你从哪里获取信息。 Javascript 在客户端运行,因此解析它并将其转换为 JSON 并不是真正的问题。尽管如果直接使用 JSON 您可以删除该解析。但是在这种情况下使用 XML 是完全没问题的,事实上这正是创建它的原因,所以它绝对是一个可行的选择。最后归结为性能和可伸缩性对您有多重要的问题。如果您从一开始就将服务设置为交付 JSON,那么如果您想要扩展,这对您来说会更容易,因为我认为生成 XML 更加困难,更不用说了需要解析它 anyway.But 故意向您展示两个相互矛盾的观点,我可以添加 third one 总结数据存储的差异(这些天很少成为问题,同样只有在大型项目中) 并且在其他情况下几乎没有区别:
Winner: JSON without compression; With compression, minor gain by using JSON
但是,如果您没有遇到数以万计的请求和臃肿的客户端 javascript 应用程序,那么它对您来说几乎没有任何区别。即使是这样,压缩它也比选择一个重要得多。
我会重复我之前说过的话,JSON 和 XML 都是为了完全相同的目的而创建的——数据序列化。因此,它们无论如何都是可以互换的,而且绝对都是有效的解决方案。但是,仅考虑您的项目将扩展多少,即便如此,这在很大程度上与个人喜好有关。
至于跨域 REST 之类的,请查看 CORS。
如果您收到JSON
数据,则不必转换为JSON
,只需读取即可。
var items = data.rss.channel.item;
for (var i = 0; i < items.length; i++) {
console.log(items[i].title);
console.log(items[i].link);
}