如何使用jquery解析解析反斜杠json结构?

时间:2015-05-14 09:49:59

标签: javascript jquery ajax json angularjs

这是我的代码。我用过jquery解析。你能帮我么?如何解析这个?

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"

错误:

  

未捕获的SyntaxError:意外的令牌,

3 个答案:

答案 0 :(得分:0)

您必须解析ggplot(dfl, aes(x=choice, y=perc, fill=choice)) + geom_bar(stat="identity") + ylab("percent") + facet_wrap(~ group) 元素才能将其转换为真实对象:

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;

答案 1 :(得分:0)

我认为后端对您的应用程序产生了错误的响应

这样的样本让我说我有一个

数组
$data['default'] = array(
    array(
        'email' => 'sample@gmail.com',
        'username' => 'username1'
    ),

    array(
        'email' => 'sample@yahoo.com',
        'username' => 'username2'
    ),

    array(
        'email' => 'sample@hot.com',
        'username' => 'username3'
    )
);

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

并使用

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

会产生类似这样的数据

"{\"default\":[{\"email\":\"sample@gmail.com\",\"username\":\"username1\"},{\"email\":\"sample@yahoo.com\",\"username\":\"username2\"},{\"email\":\"sample@hot.com\",\"username\":\"username3\"}],\"title\":\"Sample\"}"

但如果仅使用

echo json_encode($data);die();

它会创建一个有效的json数据

{
    "default": [
        {
            "email": "sample@gmail.com",
            "username": "username1"
        },
        {
            "email": "sample@yahoo.com",
            "username": "username2"
        },
        {
            "email": "sample@hot.com",
            "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));
});

使用navite 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}

答案 2 :(得分: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密钥