2012-05-01 11 views
2

サービスへのAPI呼び出しを行っていますが、無効なJSONを返しています。 photo_urlフィールドには引用符で囲まれたURLはありません。私はそれを文字列として持っており、URLの周りに引用符を追加する正規表現を書こうとしていました。私はこのすべてをJavascriptでTitaniumを使ってやっています。無効なJSONを修正するための正規表現

これは私が今持っているコードです:ここでは

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 
    } 
    } 
] 

今、それはパターンの先頭を見つけ、それでも起こっていますさらに。私はそれがカンマと関係があると信じています。私は複数のパターンマッチが起こるはずだと知っていますが、今のところ、私はただ一つを働かせようとしていました。あなたの助けを前にありがとう。

+4

正規表現で壊れたJSONを修正しようとすると、ガソリンでいっぱいのボトルを投げて発火させようとするようなものです。どちらの場合も、同じ結果、巨大な爆発に終わります。 –

+0

あなたの正規表現をテストすることができます、それは本当にうまく動作します:http://www.gskinner.com/RegExr/ – Alex

+3

あなたは、サービスプロバイダにバグレポートを送りましたか? –

答えて

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

ありがとう!それは信じられないほど上品な解決策のようだ。 – bilalq

関連する問題