jsonObject是一个字符串 - 如何转换为json?

jsonObject是一个字符串 - 如何转换为json?

问题描述:

我有我的AJAX提交的表单一个奇怪的问题......我在形式的文件上传,并以某种方式从服务器的有效JSON对象现在是一个String ...jsonObject是一个字符串 - 如何转换为json?

if (typeof jsonObject == 'string') 
     console.log('yes, it's a string'); //yes, it's a string 

console.log(jsonObject); // { "status":"success", "data":"Updated profile successfully"} 

所以,没有文件上载和console.log(jsonObject)形式的enctype:multipart返回>Object带有“成功”和“数据”属性。通过表单中的文件上传,jsonObject是一个字符串,就像你上面看到的那样。

任何想法可能导致什么?或者我怎样才能将字符串转换回有效的JSON对象?

预先感谢您。

+0

JSON只在JavaScript中存在的字符串......所以你的请求有点混乱。我假设你想要一个* JavaScript *对象。 – 2012-02-21 10:24:31

+0

是的,你是对的,并不完全知道它的区别。我需要一个jsObject - 正确! – matt 2012-02-21 10:42:25

如何将字符串转换回有效的[..]对象?

jsonObject = JSON.parse(jsonObject); 
+0

这不会导致一个JSON对象(不管是什么),而是一个JavaScript对象。 – 2012-02-21 10:25:08

+1

我100%肯定这就是他的意思。 – 2012-02-21 10:25:21

+0

是的,我也是,但应该澄清并解释JSON不是JavaScript。 – 2012-02-21 10:26:00

您可以通过JSON.parse运行,同时采用json2.js提供旧版本浏览器的方法。

var js_object = JSON.parse(json_string); 

(这会给你一个JavaScript对象,因为那里有is no such thing as a JSON object)。

如果您已经在使用jQuery,那么它有自己的抽象方法 - jQuery.parseJSON - 您可以使用它来代替json2.js。这是一个过大的库,只是为该功能加载。

您可以使用JSON.parse这只会在浏览器的新版本中工作(不会IE7-工作),或者你可以用$ jQuery.parseJSON

http://api.jquery.com/jQuery.parseJSON/