2

サービスに対して 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
    }
  }
]

現在、パターンの始まりを見つけていますが、さらに進んでいます。コンマと関係があると思います。複数のパターン マッチが発生することはわかっていますが、今のところ、1 つを機能させようとしていただけです。よろしくお願いします。

4

1 に答える 1

3
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' )
于 2012-05-01T16:47:29.743 に答える