繁体   English   中英

Javascript-如何遍历无效的JSON

[英]Javascript- How to loop through invalid JSON

我有这样的JSON数组

       {  
   "2070":{  
      "address_id":"2070",
      "firstname":"Simon",
      "lastname":"Hall",
      "company":"",
      "address_1":"",
      "address_2":"",
      "postcode":"44000",
      "city":"",
      "zone_id":"0",
      "zone":"",
      "zone_code":"",
      "country_id":"223",
      "country":"United States",
      "iso_code_2":"US",
      "iso_code_3":"USA",
      "address_format":"{firstname} {lastname} 
    {company} 
    {address_1} 
    {address_2} 
    {city}, {zone} {postcode} 
    {country}",
      "custom_field":false
   },
   "2071":{  
      "address_id":"2071",
      "firstname":"Simon",
      "lastname":"Hall",
      "company":"",
      "address_1":"TEST",
      "address_2":"",
      "postcode":"44000",
      "city":"New York",
      "zone_id":"3625",
      "zone":"Colorado",
      "zone_code":"CO",
      "country_id":"223",
      "country":"United States",
      "iso_code_2":"US",
      "iso_code_3":"USA",
      "address_format":"{firstname} {lastname} 
    {company} 
    {address_1} 
    {address_2} 
    {city}, {zone} {postcode} 
    {country}",
      "custom_field":false
   }
}

这个JSON是无效的,但是我在这种形式下得到它,我无法解析,因为它不是一个有效的JSON,我不能从字符串中删除特殊字符。 如何从这个无效的JSON中提取特定索引的数据? 循环这个JSON的任何方法?

通过您给出的示例,您可以简单地从字符串中删除所有换行符,从而生成有效的JSON。

我没有测试它,但它可能是这样的:

var json = "your json";
json = json.replace(/(?:\r\n|\r|\n)/g, '');

修改自https://stackoverflow.com/a/5664521/2911452

祝好运。

更新

正如使者提到的那样,删除新行会导致数据丢失。 因此,您可以使用“JSON转义的新行”替换新行。 请参阅: https//stackoverflow.com/a/42073/2911452

我只会替换有问题的行结尾

 data = data.replace(/\\{(lastname|company|address_1|address_2|postcode)\\}\\s?\\n/ig,'{$1}\\\\\\\\n'); console.log(JSON.parse(data)); // Object {2070: Object, 2071: Object} 
 <!-- The following just mocks the response data provided --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text" id="data"> { "2070":{ "address_id":"2070", "firstname":"Simon", "lastname":"Hall", "company":"", "address_1":"", "address_2":"", "postcode":"44000", "city":"", "zone_id":"0", "zone":"", "zone_code":"", "country_id":"223", "country":"United States", "iso_code_2":"US", "iso_code_3":"USA", "address_format":"{firstname} {lastname} {company} {address_1} {address_2} {city}, {zone} {postcode} {country}", "custom_field":false }, "2071":{ "address_id":"2071", "firstname":"Simon", "lastname":"Hall", "company":"", "address_1":"TEST", "address_2":"", "postcode":"44000", "city":"New York", "zone_id":"3625", "zone":"Colorado", "zone_code":"CO", "country_id":"223", "country":"United States", "iso_code_2":"US", "iso_code_3":"USA", "address_format":"{firstname} {lastname} {company} {address_1} {address_2} {city}, {zone} {postcode} {country}", "custom_field":false } } </script> <script>var data = $("#data").html();</script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM