問題タブ [json-deserialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 特定のフィールドが存在する場合、Jackson ポリモーフィック デシリアライゼーションを使用してサブタイプにシリアル化できますか?
動物園の例でスピンを使用します。
Animal
ウィングスパンが指定されていない場合はインスタンスを構築し、指定されている場合はインスタンスを構築するためにポリモーフィックデシリアライゼーションを使用したいと考えてBird
います。Jackson では、通常、型指定されていないデシリアライゼーションは次のようになります。
wingspan の値は何でもかまいませんが、具体的に一致するものがない場合、Jackson は defaultImpl クラスにフォールバックします。
私はおそらく使用できます@JsonCreator
:
ただし、余分な値を手動で処理し、一貫した例外をスローする必要があり、Animal
後で適切にシリアル化されるかどうかは明確ではありません。
独自のTypeResolver
orを使用できるようですTypeIdResolver
が、生の json を自分で逆シリアル化するよりも手間がかかるようです。さらに、本質的に型情報がシリアル化されていると想定しているようTypeResolver
にTypeIdResolver
見えるため、それらは使用するのに適していません。
JsonDeserializer
タイプを指定するためにライフサイクルにフックする独自のものを実装することは可能でしょうか?ただし、基本的な Jackson アノテーション処理機能を引き続き使用しますか? を見てきましたが、JsonDeserializer.deserializeWithType(...)
逆シリアル化を完全にに委任しているようTypeDeserializer
です。使用するタイプを知る前に、オブジェクトの一部を逆シリアル化する必要があるという問題もあります。
または、親オブジェクトにある場合でも、動物園のペンのタイプをターゲットにする方法があるかもしれません。
ポリモーフィック型の処理で私がやりたいことをする方法はありますか?
java - Json 配列から Java クラスへ (Gson でデシリアライズ)
Json 応答 (jsonResultAsText という名前) があります。
Google の gson ライブラリを使用してデシリアライズしたいと考えています。
私は次のようなクラスを持っています:
JsonResponse クラスに json データを取得したい。
それは私が達成しようとするコードです:
しかし、私の Android アプリケーションでは、その古典的なエラーが発生します: 残念ながら、< app_name > が停止しました。
gson クラスを介したシリアル化/逆シリアル化に関する例がたくさんあることは知っていますが、同様の問題/例は見つかりませんでした。
前もって感謝します。
c# - C# で JSON 配列を逆シリアル化する
私はトリッキーな問題で立ち往生しています。
この形式の JSON 文字列があります。
「レコード」のフィールドは増減できます。
だから、私はこのようなクラスを作りました:
そして、このように逆シリアル化しようとしています:
私は何か間違ったことをしています。しかし、見つけることができません。助けてください。
前もって感謝します。
アップデート:
実際、「Invalid JSON Primitive: .」というエラーが発生していました。このコードでファイルを読み取る文字列を取得していたため:
今、私はこれでファイルを読んでいます:
それはうまくいっています。
c# - C# での JSON の逆シリアル化
C# で JSON を逆シリアル化しようとしていますが、NullReferenceException が発生し、その理由がわかりません。
解析しようとしている JSON は次のとおりです。
そして私はこのコードを使用しています
なぜこのエラーが発生するのですか?どうすれば修正できますか?
JSONを次のように変更すると
私は得るAfter parsing a value an unexpected character was encountered: :. Path 'Entries[0]', line 1, position 20.
編集
JSONで遊んだところ、次の1つがうまくいきました:
java - Json: Gson ライブラリの使用中に逆シリアル化エラーが発生しました
Map タイプに変換する必要がある json 文字列があります。
Json 使用:
json を Map に変換するコード:
エラー:
タイプに関係があることは知っていますが、タイプトークンで明示的にタイプが String になることを示しました。
gson オブジェクトは次のように宣言されます。
windows-phone-8 - 信頼性の低い JSON を効率的に逆シリアル化する
サーバーからJSONを逆シリアル化しようとしていますが、特定のキー/値が省略されることがあり、使用できませんでした:
私は JSON.net のドキュメントを読み、次のような Linq から JSON へのデシリアライゼーションを進めました。
すべて正常に動作しますが、時々取得しますoutofmemoryexceptions
(サーバーからの JSON は非常に大きいです)。JsonConverter
JSON.net からカスタムを実装しようとしましたが、ネストされた階層 (3 レベルの深さ) では、JsonConverter
メンテナンスは言うまでもなく、複雑すぎて理解しにくくなります。
メモリ プロファイラーを実行すると、アプリケーションで OOM 例外が発生する原因となる 150 MB を超えるピークが見られました。ヒープ セクションの下で、メモリ割り当ての 30 ~ 40% がmscorlib
文字列割り当てのために行われていることがわかりました。もう 1 つの問題はループ中に発生し、GC が連続して発生していました。私は今書かれている方法に完全にうんざりしていますが、私は機知に富んでいます. 誰か助けてもらえますか?
json - Json.Net デシリアライゼーション、一部のプロパティを非シリアライズのままにする
次のようなjson文字列があります。
そして、これを次のようなクラスにデシリアライズしたいと思います。
基本的に Baz 値を逆シリアル化せず、代わりに生の文字列を保存します。つまり、Baz
シリアル化後の文字列値を次のようにします。
"[{\"Pressure\":9001,\"ServesDrinks\":true},{\"Pressure\":0,\"ServesDrinks\":false}]"
私は Json.Net を使用していますが、これを行う方法を理解できていません。Baz
理想的なケースでは、生の json を保持する魔法の属性を自分のプロパティに置きたいだけです。
ここで非常によく似た質問を見てきました: 一部のフィールドをそのままにして、JSON.NET で部分的に逆シリアル化します。
JObject
しかし、私はそのアプローチをどのように進めるかを理解していました。
(参考になれば、保持したいデータがリストであることはわかっています)
助けてくれてありがとう!
c# - .net で JSON-C を解析する方法
Youtube API は WP でサポートされていないため使用できないため、JSON 応答のみを使用することにしました。Youtube の応答タイプが JSON-C に変更されたようですが、これを解析するにはどうすればよいですか?
Newtonsoft JSON を試してみましたが、どちらもサポートしていません。何かアドバイスはありますか? ありがとう!