我有一个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,不推荐使用"但我不是特别肯定如何解决这个问题。任何帮助将不胜感激。
答案 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描述了一个对象,它将具有名称为title
,tipTitle
和tip
的属性。
此外,你过度解析:你只想解析,而不是stringify(这与解析相反):
var JSONobj = JSON.parse(returnValue);
所以:
var JSONobj = JSON.parse(returnValue);
var headerTitle = JSONobj.title;
console.log(headerTitle); // "exampleTitle"
旁注:当你将它分配给你调用JSONobj
的变量时,它不再是JSON,它只是一个普通的JavaScript对象,所以这个名称有点误导。如果你正在编写源代码,并且你没有处理字符串,那么你就不再处理JSON了。 : - )