javascript - 修复无效 JSON 的正则表达式

标签 javascript regex json

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

这是我现在的代码:

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' )

关于javascript - 修复无效 JSON 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401004/

相关文章:

python - 如何使用 Python 将 json 字段的值保存在列表中

java - 如何从jsp中调用java函数

Javascript/Jquery slider 更改功能

javascript - 如何在openlayers 3中更改悬停光标?

regex - Diff - 排除不区分大小写的模式

python - 通过域名将网络流量与授权列表进行比较

regex - sed:更改 .yml 文件中环境属性的值

javascript - AngularJS 下拉菜单不显示选定的值

javascript - 编写一个 JavaScript 函数,返回包含您姓名的字符串

json - 使用 Mongoose/NodeJS 修改具有多个键的嵌套对象,而不替换现有键