用于修复无效 JSON 的正则表达式

Regular expression to fix invalid JSON

本文关键字:正则表达式 JSON 无效 用于      更新时间:2023-09-26

我正在对服务进行API调用,但它返回了无效的JSON。photo_url字段没有用引号括起来的 url。我把它作为一个字符串,并试图编写一个正则表达式来在 url 周围添加引号。我用Javascript做这一切,使用Titanium。

这是我现在拥有的代码:

var response = '[{"friend_request":{"about_me":"","friend_id":"11043271728","gender":"M","display_name":"foo","age":21,"photo_url":http:'/'/s.foo.com'/img'/nopic'/MB_90x90_male.gif,"hometown":""},"friend_request":{"hometown":"","display_name":"bar","gender":"M","age":"","friend_id":"11040542298","about_me":"","photo_url":http:'/'/s.foo.com'/img'/nopic'/MB_90x90_male.gif}}]';
var pattern = /http.*(,|'}|'s)/i;
var flip = target.match(pattern);
var foo  = target.replace(flip, "'"" + flip + "'"");
console.log(foo);

以下是人类可读形式的 JSON:

[
  {
    "friend_request": {
      "about_me": "",
      "friend_id": "11043271728",
      "gender": "M",
      "display_name": "foo",
      "age": 21,
      "photo_url": http:'/'/s.foo.com'/img'/nopic'/MB_90x90_male.gif,
      "hometown": ""
    },
    "friend_request": {
      "hometown": "",
      "display_name": "bar",
      "gender": "M",
      "age": "",
      "friend_id": "11040542298",
      "about_me": "",
      "photo_url": http:'/'/s.foo.com'/img'/nopic'/MB_90x90_male.gif
    }
  }
]

现在,它找到了模式的开始,但更进一步。我相信这与逗号有关。我知道应该发生多种模式匹配,但现在,我只是想让一个工作。提前感谢您的帮助。

var response = '[{"friend_request":{"about_me":"","friend_id":"11043271728","gender":"M","display_name":"foo","age":21,"photo_url":http:'/'/s.foo.com'/img'/nopic'/MB_90x90_male.gif,"hometown":""},"friend_request":{"hometown":"","display_name":"bar","gender":"M","age":"","friend_id":"11040542298","about_me":"","photo_url":http:'/'/s.foo.com'/img'/nopic'/MB_90x90_male.gif}}]';
var str = response.replace( /("photo_url":)([^,}]+)([,'}])/g, '$1"$2"$3' )