JSON String将每个字符解析为对象

时间:2015-10-20 09:25:26

标签: json

我有一个JSON文件,其中包含我认为正确的JSON字符串:

{"title": "exampleTitle", "tipTitle": "exampleTipTitle", "tip": "exampleTip"}

我尝试解析所述文件并取出3个值然后将它们存储在变量中,但是目前,它将每个单独的字符解析为一个单独的对象,因此:

JSONobj[1] =  "

等等。假设currentLocation = json文件的目录位置。

代码

var jsonLocation = currentLocation + "json.txt";
var request = new XMLHttpRequest();
request.open("GET", jsonLocation, false);
request.send(null);
var returnValue = request.responseText;
var JSONobj = JSON.parse(JSON.stringify(returnValue));
var headerTitle = JSONobj[0];

一些澄清,stringify是因为它抛出了意外的令牌错误。我已经尝试将文件磁贴更改为.json,但这也没有区别。 "它还在主线程上发布XMLHttpRequest,不推荐使用"但我不是特别肯定如何解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

var returnValue = request.responseText;

此处returnValue是一个JSON字符串。

"{\"title\": \"exampleTitle\", \"tipTitle\": \"exampleTipTitle\", \"tip\": \"exampleTip\"}
var JSONobj = JSON.parse(JSON.stringify(returnValue));

在这里,您将JSON的字符串转换为JSON。所以你有一个表示字符串的JSON字符串,该字符串是JSON中数据结构的表示。

"\"{\\"title\\": \\"exampleTitle\\", \\"tipTitle\\": \\"exampleTipTitle\\", \\"tip\\": \\"exampleTip\\"}"

然后解析它并将其转换回原始的JSON字符串。

"{\"title\": \"exampleTitle\", \"tipTitle\": \"exampleTipTitle\", \"tip\": \"exampleTip\"}

所以你最终会回到你的起点。

请勿在此处使用JSON.stringify,并将您的JSON转换为JavaScript对象:

var javascript_object = JSON.parse(returnValue);

然后你有一个对象,但它没有0属性,所以用javascript_object[0]访问它是没有意义的。属性具有名称,例如javascript_object.title

答案 1 :(得分:1)

您的JSON没有描述数组,因此使用类似0的索引对其进行索引是没有意义的。您的JSON描述了一个对象,它将具有名称为titletipTitletip的属性。

此外,你过度解析:你只想解析,而不是stringify(这与解析相反):

var JSONobj = JSON.parse(returnValue);

所以:

var JSONobj = JSON.parse(returnValue);
var headerTitle = JSONobj.title;
console.log(headerTitle); // "exampleTitle"

旁注:当你将它分配给你调用JSONobj的变量时,它不再是JSON,它只是一个普通的JavaScript对象,所以这个名称有点误导。如果你正在编写源代码,并且你没有处理字符串,那么你就不再处理JSON了。 : - )