2012-09-21 99 views
2

我在驗證我的json_encode()函數的輸出時遇到問題。PHP json_encode()顯示JSONLint錯誤的結果

我正在使用cURL提取XML提要,將其轉換爲數組,然後將該數組轉換爲JSON並使用json_endode()。生病饒你捲曲的東西:

foreach ($xmlObjects->articleResult as $articleResult) { 
    $article = array(
     "articleResult" => 
     array(
     'articleId' => (string)$articleResult->articleId, 
     'title' => (string)$articleResult->title, 
     'subhead' => (string)$articleResult->subhead, 
     'tweet' => (string)$articleResult->tweet, 
     'publishedDate' => (string)$articleResult->publishedDate, 
     'image' => (string)$articleResult->image 
    ), 
    ); 
    $json = str_replace('\/','/',json_encode($article)); 
    echo $json; 
    } 

這是給我的一個JSON讀出:

{ 
    "articleResult": { 
     "articleId": "0001", 
     "title": "Some title", 
     "subhead": "Some engaging subhead", 
     "tweet": "Check out this tweet", 
     "publishedDate": "January 1st, 1970", 
     "image": "http://www.domain.com/some_image.jpg" 
    } 
} 
{ 
    "articleResult": { 
     "articleId": "0002", 
     "title": "Some title", 
     "subhead": "Some engaging subhead", 
     "tweet": "Check out this tweet", 
     "publishedDate": "January 1st, 1970", 
     "image": "http://www.domain.com/some_image.jpg" 
    } 
} 

這會給我一個JSONLint錯誤說:

Parse error on line 10: 
..._120x80.jpg" }}{ "articleResult 
---------------------^ 
Expecting 'EOF', '}', ',', ']' 

所以我自然會添加逗號,這給我一個文件結束的期望:

Parse error on line 10: 
..._120x80.jpg" }},{ "articleResu 
---------------------^ 
Expecting 'EOF' 

我是JSON的新手,但是我已經檢查了網站和一些適當的JSON格式和結構的資源,從我能看到的內容中我可以看到遵循指南。任何指針?

資源我檢查:

JSON.org自然

Wikipedia已經詳細記錄頁面

W3Resource HAD結構的一個很好的解釋。

JSONLint

回答

1

你被編碼2+對象爲JSON字符串,則需要[]來包裝他們

正確的語法是

[ 
    { /* first object */ } 
, { /* second object */ } 
, { /* third object */ } 
] 

你需要看的出來是

的東西
  • [ ]個包裝
  • 用逗號
單獨的對象

解決方案

$json = array(); 
foreach ($xmlObjects->articleResult as $articleResult) { 
    $article = array(
    "articleResult" => 
    array(
     'articleId' => (string)$articleResult->articleId, 
     'title' => (string)$articleResult->title, 
     'subhead' => (string)$articleResult->subhead, 
     'tweet' => (string)$articleResult->tweet, 
     'publishedDate' => (string)$articleResult->publishedDate, 
     'image' => (string)$articleResult->image 
    ), 
); 
    $json[] = $article; 
} 
echo json_encode($json); 
+0

嘿感謝您的答覆!我很難掌握如何以編程方式將此解決方案添加到我的代碼中。爲什麼不'json_encode()'處理這個問題?我的'foreach'數組中有沒有語法錯誤?我嘗試添加'echo「[」。$ json。「],」;「但是也會拋出錯誤。 – robabby

+0

請參閱已編輯的解決方案 – Neverever

+0

PHP用'解析錯誤:語法錯誤,意外'[''。它指的是'foreach'前的'$ json = [];'變量。把它變成一個字符串響應'致命錯誤:[]運算符不支持字符串'。但是,將所有變量一起移除將爲我提供有效的JSON讀數。我認爲這足夠了。非常感謝回覆。你有什麼機會願意說出解決方案爲什麼修復它,或者解釋它的鏈接?再次感謝。 – robabby