【问题标题】:How do I parse this invalid JSON string in jQuery?如何在 jQuery 中解析这个无效的 JSON 字符串?
【发布时间】:2010-05-20 15:35:33
【问题描述】:

我希望访问此数据属性中的各种数据位:

<div class="location" data="{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}">

当然,在 jQuery 中可以很容易地访问 data 属性。但是字符串 似乎 是 JSON 的非标准或无效形式。我已经尝试过 JSON.parse() 以及拆分数组的基本 JS 方法。总而言之,它似乎只是一个无效序列化的字符串。

我需要重新格式化数据字符串吗? (它不是来自我,它被我不想破坏的其他例程使用,所以......)

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    通常我会说这是危险的(事实上我现在会说),但试试:

    var decoded;  eval("decoded = " + $('div.location').attr('data'));
    

    这是无效的 JSON,因为标签没有被引用。

    【讨论】:

      【解决方案2】:

      您收到解析错误的原因是属性名称没有正确引用。 这虽然有效:

      var obj = eval("(" + "{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}" + ")");
      

      需要封闭 () 以避免 eval 将 {} 视为块语句。

      【讨论】:

        【解决方案3】:

        JSON 的解析格式错误。 It works 如果你像这样重新格式化:

        var obj = jQuery.parseJSON('{"id": 4, "point": {"lng": -71.413364, "lat": 41.673681}, "category": "Restaurant"}');
        
        $("#blah").text(obj.point.lng);
        

        【讨论】:

          猜你喜欢
          • 2018-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多