2015-10-20 154 views
-1

我有一個包含了我認爲是正確的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]; 

一些澄清,該字符串化是因爲它拋出一個意外的標記錯誤。我已經嘗試將文件磁貼改爲.json,但這也沒有區別。 「它也會在主線程上發出一個XMLHttpRequest」,但我不太確定如何解決這個問題。任何幫助,將不勝感激。

+0

附註:避免將'false'作爲第三個參數傳遞給'open'。相反,擁抱網絡編程的異步性。 –

回答

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

+0

我看到,這個返回的對象對象,但我可以看到,我的問題更多的是我試圖索引一些實際上不是數組的東西。我很感激幫助。 – CSafari

1

您的JSON並未描述數組,因此使用像0這樣的索引編入索引是沒有意義的。您的JSON描述了一個對象,它將具有名稱爲title,tipTitletip的屬性。

此外,你矯枉過正您解析:你只是想解析,不字符串化(這是解析的對面):

var JSONobj = JSON.parse(returnValue); 

所以:

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

注意:當你將它分配給你調用的變量JSONobj時,它不再是JSON,它只是一個普通的JavaScript對象,所以th在名稱上有點誤導。如果你正在編寫源代碼,並且你沒有處理字符串,那麼你就不再處理JSON了。 :-)

+0

與昆汀一起解決了這個問題,謝謝。 – CSafari