問題タブ [datacontractjsonserializer]

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.

0 投票する
0 に答える
229 参照

c# - JSON 文字列をデシリアライズせずに解析する方法はありますか?

状況によっては、ノードが重複する JSON を返す Web サービスを呼び出して、次のような出力を提供しています。

私はこれを修正するためにサービスのプロバイダーに依存していますが、これは彼らにとって優先事項ではないため、対処する必要があります. これを処理するために、JsonReaderWriterFactory を使用して JSON を XML に変換し、次のルーチンを使用して結果の XML から重複ノードを削除しています。

別の領域で、次のコードを使用して、DataContractJsonSerializer を使用して JSON を厳密に型指定されたオブジェクトに逆シリアル化する必要があります。

JSON にその重複ノードが含まれている場合、これは失敗するため、RemoveDuplicateChildren メソッドと同じ機能を実装する必要がありますが、逆シリアル化の前に、XML ノードではなく JSON をステップ実行する必要があります。JsonConvert を使用して XML に変換し、既存のメソッドでノードを削除してから JSON に戻すという簡単なオプションを使用できません。これは、XML との間の変換によって JSON が変更されるためです。 . XmlNode クラスで提供されているように、C# で JSON 階層をナビゲートする同等の方法はありますか?

アップデート:

この質問は、一部のコメントによって難読化されています。明確にするために、JSON から削除したいノードは、2 番目の「shipments」の 2 番目の「outlet_id」など、同じ親の同じレベルで繰り返される (名前によると、コンテンツは無関係です) ノードです。上記の例のアイテム。ハードコーディングされた要素名を使用せずに、これを一般的な方法で行う必要があります。上記の RemoveDuplicateChildren メソッドはまさに必要なことを行います。XML 文字列の代わりに JSON 文字列に対してそのメソッドとまったく同じことを行うために使用できるクラスがあるかどうかを尋ねているだけです。

0 投票する
2 に答える
4318 参照

c# - DataContractJsonSerializer を使用して、リストとインターフェイスをプロパティとして持つ C# オブジェクトへの JSON 文字列の逆シリアル化

サードパーティの REST サービスを呼び出す ac#.dotNet プロジェクトに取り組んでいます。

サンプルクラス構造:

Json_String1 : (型ヒント付き)

Json_String2 : (型ヒントなし)

したがって、特定のクラス構造に対して、をMainClass使用して (のオブジェクトの) json を生成すると、 Json_String1DataContractJsonSerializerが取得され、直接逆シリアル化すると正常に動作します。

一方、データをGETしている間、応答はJson_String2 (型ヒントなし) です。したがって、デシリアライズ中に次のエラーが発生します。

無効なキャスト例外

InvalidCastException が処理されませんでした。タイプ 'System.Object' のオブジェクトをタイプ 'WpfApplication1.IClass2' にキャストできません。

ここで、型ヒントを追加して上記の json (文字列操作) を手動で変更し、正常に逆シリアル化する必要があります。

質問 1) デシリアライズのためにこの Json 文字列操作を回避するにはどうすればよいですか?

質問 2) タイプヒントなしで json を作成するにはどうすればよいですか?

edit : 1. MainClassによって実装されるIMainInterfaceを追加しました。2. dotNet フレームワーク 4

0 投票する
1 に答える
273 参照

asp.net - Json オブジェクトのプロパティが "@" 記号で指定されている場合に DataContractJsonSerializer を使用する

DataContractJsonSerializer を使用して json 応答を解析しているときに、@id というプロパティ名を持つ json オブジェクトに遭遇しましたが、このフィールドに入力できないようです。他のすべてのフィールドは問題なく入力されています。Fiddler を使用してこのフィールドに入力することもできますが、DataContractJsonSerializer を使用することはできません。私のコードは次のとおりです...

そのjson @idフィールドをVehicleクラスidプロパティにマップするにはどうすればよいですか?

0 投票する
0 に答える
448 参照

c# - ヘッダークラ​​スを使用せずにDataContractJsonSerializerSettingsを使用してJSONの辞書を解析する

JSON 文字列を解析して項目のリストにしています。json テキストには、親アイテム「マテリアル」の下に辞書として編成されたアイテムがあります。以下のコードは機能します。MaterialHeader クラスが必要ない場合にこれを行うより良い方法はありますか?

0 投票する
2 に答える
12676 参照

c# - 名前空間 '' からの要素 'root' が必要です..名前 ''、名前空間 '' の 'None' が見つかりました

私は過去 4 時間、この問題に対処する方法を探していましたが、まだ解決策を見つけていません。

.NET を使用して API を構築しており、API 呼び出しから返された JSON 情報を解析したいと考えています。

私の現在のアプローチは次のことを行います。

しかし、現在、指定された行で例外が発生しています。クラスが正しいシリアル化名前空間を実装していることを確認しました。

シリアル化しようとしているクラスには、それに応じて DataContract および Member フィールドが設定されています。

ただし、Postman などの HTTP クライアントを使用してリクエストを行うと、質問のタイトルに記載されているエラーが表示されます

ここに画像の説明を入力

0 投票する
2 に答える
904 参照

xamarin - Xamarin Android の空のアプリに DataContractJsonSerializer を使用する

DataContractJsonSerializer を使用しようとしていますが、参照/名前空間を取得できないようです。.NET Framework 4.5 でアプリを作成しました。

[参照の追加] をクリックすると、System.ServiceModel のバージョン 2.0.5.0 のみが取得されます

0 投票する
0 に答える
815 参照

c# - 返された JSON 文字列からスラッシュと引用符を削除します

以下のコードを使用して、モデル クラスを JSON データに変換しています

ブラウザから開くと、生成された JSON は次のようになります

では、どうすればスラッシュを取り除くことができますか。問題は、JSON にシリアル化してカスタム プロパティを表示することではなく、応答からスラッシュを削除することです

解析された JSON の代わりにモデルを直接返すことは 1 つの方法ですが、私の場合、プラグイン [ https://github.com/Serhioromano/bootstrap-calendar ] iこのように要求の厳しい構造を使用しています とにかく JSON Serializationa を使用する必要があります では、このスラッシュと不要な引用符の問題をどのように取り除くことができますか?

0 投票する
1 に答える
47 参照

c# - Json書き込みはシリアル化できません

プロセス:

  1. クラスを作成しますPlayer

  2. プレーヤーを作成しますList<Player>()

  3. プレイヤーをリストに追加します。

  4. jsonシリアルファイルを書き込みます。

    ボタンをクリックするwriteJsonと、次のエラーが表示されます。

    /li>

質問:

でマークList<Player>()する方法CollectionDataContractAttribute