sno*_*pey 159 javascript json object
如何使用JavaScript(或jQuery)将描述对象的字符串转换为JSON字符串?
例如:转换它(不是有效的JSON字符串):
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
Run Code Online (Sandbox Code Playgroud)
进入这个:
str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'
Run Code Online (Sandbox Code Playgroud)
我希望eval()尽可能避免使用.
Mat*_*ley 177
如果字符串是来自可靠来源,你可以使用eval然后JSON.stringify的结果.像这样:
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";
var json = JSON.stringify(eval("(" + str + ")"));
Run Code Online (Sandbox Code Playgroud)
请注意,当您eval使用对象文字时,必须将其括在括号中,否则将大括号解析为块而不是对象.
我也同意这个问题下的评论,即在开始时用有效的JSON编码对象会更好,并且避免必须解析,编码,然后可能再次解析它.HTML支持单引号属性(只需确保对字符串中的任何单引号进行HTML编码).
Roc*_*mat 110
你的字符串是无效的JSON,所以JSON.parse(或jQuery的$.parseJSON)将无法正常工作.
一种方法是使用eval"解析""无效"JSON,然后stringify将其"转换"为有效的JSON.
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
str = JSON.stringify(eval('('+str+')'));
Run Code Online (Sandbox Code Playgroud)
我建议您不要试图"修复"无效的JSON,而是先从有效的JSON开始.如何str生成,它应该在生成之前修复,而不是之后.
编辑:您说(在评论中)此字符串存储在数据属性中:
<div data-object="{hello:'world'}"></div>
Run Code Online (Sandbox Code Playgroud)
我建议你在这里解决它,所以它可以只是JSON.parsed.首先,它们的键和值都需要用双引号引用.它应该看起来像(HTML中的单引号属性是有效的):
<div data-object='{"hello":"world"}'></div>
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用JSON.parse(或jQuery $.parseJSON).
var str = '{"hello":"world"}';
var obj = JSON.parse(str);
Run Code Online (Sandbox Code Playgroud)
Far*_*mor 49
str = jQuery.parseJSON(str)
Run Code Online (Sandbox Code Playgroud)
编辑.如果您有一个有效的JSON字符串
Ron*_*ite 41
在下面的链接中使用简单的代码:
http://msdn.microsoft.com/es-es/library/ie/cc836466%28v=vs.94%29.aspx
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
Run Code Online (Sandbox Code Playgroud)
并反转
var str = JSON.stringify(arr);
Run Code Online (Sandbox Code Playgroud)
all*_*kim 23
我希望这个小函数将无效的JSON字符串转换为有效的字符串.
function JSONize(str) {
return str
// wrap keys without quote with valid double quote
.replace(/([\$\w]+)\s*:/g, function(_, $1){return '"'+$1+'":'})
// replacing single quote wrapped ones to double quote
.replace(/'([^']+)'/g, function(_, $1){return '"'+$1+'"'})
}
Run Code Online (Sandbox Code Playgroud)
结果
var invalidJSON = "{ hello: 'world',foo:1, bar : '2', foo1: 1, _bar : 2, $2: 3, 'xxx': 5, \"fuz\": 4, places: ['Africa', 'America', 'Asia', 'Australia'] }"
JSON.parse(invalidJSON)
//Result: Uncaught SyntaxError: Unexpected token h VM1058:2
JSON.parse(JSONize(invalidJSON))
//Result: Object {hello: "world", foo: 1, bar: "2", foo1: 1, _bar: 2…}
Run Code Online (Sandbox Code Playgroud)
谨慎使用(因为eval()):
function strToJson(str) {
eval("var x = " + str + ";");
return JSON.stringify(x);
}
Run Code Online (Sandbox Code Playgroud)
呼叫:
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";
alert( strToJson(str) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
562944 次 |
| 最近记录: |