2011-08-12 2 views
0

オープンとクローズの引用符を使用せずに次のjson文字列を解析するにはどうすればよいですか?そのjavascript JSON.parse関数のように文字列を引用符で解析しているようです!したがって、構文エラーがスローされます。jsonの文字列を開き文字列引用符と閉じ文字列引用符なしで解析するにはどうすればよいですか?

これは私の文字列です。

"[ 
    { 
     "pk": 1, 
     "model": "pms.category", 
     "fields": { 
      "name": "Rent", 
      "add_date": "2011-07-28 01:33:21", 
      "agent": 3, 
      "category_type": "I", 
      "add_user": 3, 
      "desc": "Rent" 
     } 
    }, 
    { 
     "pk": 2, 
     "model": "pms.category", 
     "fields": { 
      "name": "Deposit Rent", 
      "add_date": "2011-07-28 01:33:21", 
      "agent": 3, 
      "category_type": "I", 
      "add_user": 3, 
      "desc": "Rent Deposit" 
     } 
    } 
]" 

編集:面白い 何かが私は私の開発マシンのこの文字列を実行すると、それが正しく解析されていることですが、本番サーバー上で、それが失敗しました。

+3

引用符がデータの一部である場合、引用符はJSONではなく文字列です。 – Quentin

答えて

3

は開閉引用符を交換して、文字列の解析:さらに

s = s.replace(/^"|"$/g, ''); 
var jsonDoc = JSON.parse(s); 

を、不正な形式のJSONを発するプログラムやライブラリの作者にバグレポートを提出します。

+0

まだ幸運なことに、クロームデバッガで実行中で、まだ構文エラーが発生しています!文字列をコピーしてクロームコンソールで実行すると、これは素晴らしいです! – gath

+0

@gathあなた自身が問題を見つけられない場合は、間違った形式のJSONに関する新しい質問(http://pastebin.com/へのリンク、たとえば20行以上のリンクを含む)を自由に感じてください。また、その不正な形式のJSONの作者を叩くことも自由です。 – phihag

+0

@philag、外部の二重引用符を一重引用符で置き換えました。 JSON.parse(s.replace(/^"|" $/g、 "'")))。ありがとうたくさん。 – gath

1

あなたはおそらく

mystring = mystring.replace(/^"|"$/g,'') 
1

この資料の内容は、そうでない場合は、あなたのJSON形式でなければなりません...あなたの文字列から外側の引用符を削除する必要があり、それはJSON.parse

[ 
     { 
      "pk": 1, 
      "model": "pms.category", 
      "fields": { 
       "name": "Rent", 
       "add_date": "2011-07-28 01:33:21", 
       "agent": 3, 
       "category_type": "I", 
       "add_user": 3, 
       "desc": "Rent" 
      } 
     }, 
     { 
      "pk": 2, 
      "model": "pms.category", 
      "fields": { 
       "name": "Deposit Rent", 
       "add_date": "2011-07-28 01:33:21", 
       "agent": 3, 
       "category_type": "I", 
       "add_user": 3, 
       "desc": "Rent Deposit" 
      } 
     } 
    ] 
によって適切に解析されません

2. headタグの間にgithubリポジトリからjson2.jsをインクルードします。

関連する問題