1

サーバーからjsonを取得します。Jsonは非常に大きいです。私はこれの小さな部分を示しています

{
      "id": "9429531978965160",
      "name": "Morning in  "Paris"",  // json.net cannot deserialize this line, because line have no escaped quotes.
     "alias": "ThisAlias"
}
4

2 に答える 2

0

受け取っている出力が非標準の json であるだけでなく、明確に定義された言語ではなく、単純なケースでも明確に解析されないという点で壊れています。どのように解析する必要があります{"a": "A", "b": "B"}か? 1つの方法は合法的なjsonです。a別の有効な解析は、値を持つ単一のプロパティです"A\", \"b\": \"B"

他の人が言ったように、最善の解決策は、無効なガベージを出力しないようにサーバーを修正することです。それができない場合は、独自のパーサーを作成する必要があります。通常のパーサーは、"Paris" の 'P' で構文エラーを宣言します。パーサーは、最後の引用トークンに戻って、それがエスケープされたかのように処理しようとする可能性があります。次の構文エラーは、連続する引用符の 2 番目にあり、引用符トークンがエスケープされたかのようにバックアップされて処理される可能性があります。入力が正当なjsonから逸脱する他の方法がある場合は、それらも処理する必要があります。

パーサーに慣れていない場合、これには時間がかかります。完了すると、仕様が不十分でほとんど役に立たない言語を認識するパーサーが得られます。つまり、これはほとんど時間の無駄になります。サーバー側で修正するためにできることをしてください。

于 2013-03-29T23:43:31.263 に答える
0

問題は、無効な JSON を生成するサーバー側です。

これを修正する正規表現を書いてみることができます (3 番目と最後の間の引用符を検索します)。エスケープされていない改行など、JSON には他にも多くの問題がある可能性があることに注意してください。

于 2013-03-29T12:07:30.410 に答える