将字符串转换为JSON或获取键的值

时间:2014-04-18 15:38:43

标签: javascript json

嗨,我有一个这样的字符串:

a = '{test: "3", company: "hi", time: "1397758516000", test: "29", test: "48"}'

我想获得所有键的值。我想解析它:

JSON.parse(a) //which throws the error --> SyntaxError: JSON.parse: expected property name or '}'

a['device'] //Get the device value

如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

您也可以使用eval函数来获取JavaScript对象,但JSON.parse的问题是您的字符串无效。键也应该包含在这样的引号中:

a = '{"device": "3", "company": "hi", "time": "1397758516000", "lat": "29.339533333333332", "lon": "48.009258333333335"}';

答案 1 :(得分:1)

正如@ Volter9所说,你有不正确的JSON字符串。如果你想保留它,请尝试:

var output = JSON.parse(a.replace(/([a-z]+):/gi, '"$1":'));
console.log(output.device);

答案 2 :(得分:1)

修复JSON之后,如Volter9的回答所示,获取值的代码也需要修复。它应该是:

var parsed = JSON.parse(a);
var device = parsed.device; // or parsed['device']

答案 3 :(得分:0)

你JSON不是json,它是一个原生的js对象。

{"device":"3","company":"hi","time":"1397758516000","lat":"29.339533333333332","lon":"48.009258333333335"}

是有效的。

a = {test: "3", company: "hi", time: "1397758516000", test: "29", test: "48"};

您可以JSON.stringify(a)将原生js对象转换为有效的json。