2015-05-14 105 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键已经被引用
  • 一个长的单串