2015-05-14 91 views
0

這是我的代碼。我用jQuery解析。你能幫我麼?如何解析這個?如何使用jquery解析解析反斜槓json結構?

var jsondata= { 
    "forms": [ 
    "{\"lat\":11.913859799999999,\"lng\":79.8144722}", 
    "{\"lat\":11.913859799999999,\"lng\":79.8144722}" 
    ] 
} 
var a=$.parseJSON(jsondata); 
alert(a.forms[0].lat); // not working show "undefined" 

錯誤:

Uncaught SyntaxError: Unexpected token ,

+2

爲什麼在文中有反斜槓? – evolutionxbox

+0

我正在使用sailsjs後端。返回json這種格式。我已經存儲了我的db字段json值結構。所以 – Angu

+0

沒有什麼可以解析的,'jsondata'已經是一個對象。 –

回答

0

你必須解析forms[0]元素將其轉換爲一個真正的對象:

var jsondata= { 
 
    "forms": [ 
 
    "{\"lat\":11.913859799999999,\"lng\":79.8144722}", 
 
    "{\"lat\":11.913859799999999,\"lng\":79.8144722}" 
 
    ] 
 
} 
 

 
var result = document.querySelector('pre'); 
 

 
result.textContent = JSON.parse(jsondata.forms[0]).lat; 
 
//     ^parse here 
 

 
// parse all elements of jsondata.forms: 
 
// first: convert the elements of jsondata.forms to objects 
 
jsondata.forms = jsondata.forms.map(function (v) { return JSON.parse(v); }); 
 

 
// now the jsondata.forms elements are objects 
 
result.textContent += '\n\nThe converted jsondata.forms Array\n' + 
 
         JSON.stringify(jsondata.forms, null, ' ') + 
 
         '\n\nso: jsondata.forms[1].lng = ' + jsondata.forms[1].lng;
<pre></pre>

+0

var a = JSON.parse(jsondata.forms); (var i = 0; i Angu

+0

你能幫助我嗎? – Angu

+0

嗨@Angu,看到編輯答案。 – KooiInc

0

我覺得後端可以產生對您的應用的錯誤迴應在

樣這樣可以說,我有

$data['default'] = array(
    array(
     'email' => '[email protected]', 
     'username' => 'username1' 
    ), 

    array(
     'email' => '[email protected]', 
     'username' => 'username2' 
    ), 

    array(
     'email' => '[email protected]', 
     'username' => 'username3' 
    ) 
); 

$data['title'] = 'Sample'; 

數組並用

echo json_encode(json_encode($data));die(); 

會導致像這樣

"{\"default\":[{\"email\":\"[email protected]\",\"username\":\"username1\"},{\"email\":\"[email protected]\",\"username\":\"username2\"},{\"email\":\"[email protected]\",\"username\":\"username3\"}],\"title\":\"Sample\"}" 

數據,但如果只用

echo json_encode($data);die(); 

這將創建一個有效的JSON數據

{ 
    "default": [ 
     { 
      "email": "[email protected]", 
      "username": "username1" 
     }, 
     { 
      "email": "[email protected]", 
      "username": "username2" 
     }, 
     { 
      "email": "[email protected]", 
      "username": "username3" 
     } 
    ], 
    "title": "Sample" 
} 

使用您的數據

var jsondata= { 
    "forms": [ 
    "{\"lat\":11.913859799999999,\"lng\":79.8144722}", 
    "{\"lat\":11.913859799999999,\"lng\":79.8144722}" 
    ] 
}; 

,並使用一些jQuery代碼:

$.each(jsondata.forms, function(i, me){ 
console.log(JSON.parse(me)); 
}); 

使用JavaScript的成田

for (var i = 0; i < jsondata.forms.length; i++) { 
console.log(JSON.parse(jsondata.forms[i])); 
} 

返回

{lat: 11.913859799999999, lng: 79.8144722} 
{lat: 11.913859799999999, lng: 79.8144722} 
+0

ok.i使用風帆js – Angu

0

JSON不是JavaScript!它是一種數據序列化格式。

var jsondata = 
    "{ \"forms\": [" 
    + "{\"lat\":11.913859799999999,\"lng\":79.8144722} , " 
    + "{\"lat\":11.913859799999999,\"lng\":79.8144722} ] }" 

var a = JSON.parse(jsondata) 
  • 沒有必要的jQuery - JavaScript語言提供本地JSON.parseJSON.stringify
  • JSON數據必須是傳遞給parse
  • JSON鍵已經被引用
  • 一個長的單串