从(JSON)字符串中获取值

Posted

技术标签:

【中文标题】从(JSON)字符串中获取值【英文标题】:Get value from (JSON) String 【发布时间】:2016-09-30 13:39:26 【问题描述】:

我有一个通过 HTTP 请求传递的字符串。但是我无法从中获得价值。字符串如下:

var a = "health":"img/biking_cropped.jpg","budget":"img/hip_cropped.jpg","culture":"img/old_museum_cropped.jpg"

但是,我无法获得例如 Health 的值,因为 a.health 给出了 undefined。但是 a[0] 只返回 。使用 JSON.parse 会使运行它的服务器崩溃。

【问题讨论】:

它对我有用:jsfiddle.net/vj1nqeu5 它不是一个字符串,它工作正常jsfiddle.net/vasi_32/8ocbbx2r "字符串如下" — 这不是字符串。 “但是 a[0] 只返回 。” — 你不会从你提供的代码中得到那个结果。 “使用 JSON.parse 会使运行它的服务器崩溃”——以什么方式?报告了哪些错误? 我认为问题在于我已经通过缓冲区获取了值并将其字符串化。我尝试过另一种方式或改变它 那是一个对象,而不是一个字符串 pal。如果字符串应该是: var a = "something"; 【参考方案1】:

这里a是一个对象

除了使用a.health等你还可以使用for .in来获取key和它的值

var a =
        "health":"img/biking_cropped.jpg",
       "budget":"img/hip_cropped.jpg",
       "culture":"img/old_museum_cropped.jpg"
       

for(var keys in a)
document.write('<pre>'+keys + '--'+a[keys]+'<pre>')

查看jsfiddle

您还可以使用dot(.)bracket [] 表示法来获取键的值。

可能你正在尝试做一个[key]。例如a['health']

【讨论】:

【参考方案2】:

使用 JSON 解析器。有很多 JSON 解析器。

http://www.json.org/

【讨论】:

【参考方案3】:

您需要选择值并将值分配给变量。您可以使用点表示法 . 或括号表示法 [ ]

var a = "health":"img/biking_cropped.jpg","budget":"img/hip_cropped.jpg","culture":"img/old_museum_cropped.jpg";

var health = a['health'];
var budget = a.budget;
var culture = a.culture;

console.log(health +  "---- " + budget + " ---- " + culture) 
// img/biking_cropped.jpg---- img/hip_cropped.jpg ---- img/old_museum_cropped.jpg

这是一个codepen链接http://codepen.io/anon/pen/LZEjme

【讨论】:

【参考方案4】:

a[0] 返回“”的唯一原因是整个 json 对象是一个字符串。

var a = "abc";
console.log(a[0]); // Prints a
typeof a; //prints "string"

var b = ;
typeof b; //prints "object"

检查变量的“typeof”。它应该是一个对象 vs 字符串。

【讨论】:

以上是关于从(JSON)字符串中获取值的主要内容,如果未能解决你的问题,请参考以下文章

GSON - 从字符串中获取 JSON 值

从(JSON)字符串中获取值

如果包含 json 文档作为字符串,如何从 MySQL(5.6) 列中获取值

从 jQuery GET JSON 响应字符串中获取单个值

从JSON对象获取字符串值失败如果Identifier有空格android

如何从JSON字符串获取值的所有JSON路径列表?