問題タブ [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 投票する
1 に答える
1148 参照

c# - C# - JsonSerializer - DataContract ランタイム エラー

JSON REST Web サービスを使用するように求めます。

私のクラスは次のとおりです。

これらのクラスを作成するために、私は http://json2csharp.com/
を使用しました 私のメインクラスは

しかし、インラインで は、 jsonResponse = (JsonResponse)serializer.ReadObject(ms) invalidDataContractException WFEsura.Result をシリアル化できません。

説明: System.Runtime.Serialization.dll で、タイプ 'System.Runtime.Serialization.InvalidDataContractException' の未処理の例外が発生しました

App.configで私は

私は何を間違っていますか?

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

c# - DataContractJsonSerializer 人間が読める json

基本的に、1つの顕著な違いがあるこのDataContractJsonSerializer質問のだまされます-私は使用する必要があります.

シンプルな

生成された単一行のjson、たとえば(ファイルに保存された場合)

それを作るためのオプションは何ですか

私は後処理を考えることができます...もっと簡単なオプションはありますか? たとえば、 DataContractSerializer によって生成される xmlのフォーマットに似ていますか?

SomeKindOfWriter必要に応じてjsonを美しくする方法はありますか?

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

c# - parse.com: "__type" プロパティを使用して JSON オブジェクトを逆シリアル化すると、SerializationException が発生する

Windows 10 UWP アプリを開発していますが、このエラーを取り除くことができないようです:「タイプ 'System.Runtime.Serialization.SerializationException' の例外が mscorlib.ni.dll で発生しましたが、ユーザー コードで処理されませんでした」

Rest API を使用して、Parse のデータ ストアから値を取得し、オブジェクトをインスタンス化しています。これが私のクラスの外観です

JSON 出力は次のようになります。

エラー メッセージの詳細は次のとおりです。 追加情報: 要素 ':image' には ':File' データ コントラクトのデータが含まれています。デシリアライザーは、このコントラクトにマップされる型を認識しません。'File' に対応する型を既知の型のリストに追加します。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストに追加します。

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

json - 項目のコレクションに DataContract Json シリアライザーと不足しているブラケット

逆シリアル化/シリアル化してデータ コントラクトを json 形式にすると、アイテムのコレクションにブラケットがなく、Web API に投稿するときに失敗します。[] ブラケットを使用した正しい形式の json を次に示します。

これは私が得たものです。basketitems の [] がありません

これが、シリアル化に使用しているクラスと関数です。

名前空間の終了

これがシリアル化機能です

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

c# - DataContractSerializer を使用して名前のない型のコレクションで JSON を逆シリアル化する方法

ルートマイレージに関するデータを取得するために Web サービスを使用しています。次に、デシリアライザーを使用して解析しています。JSON は次のようになります。

この応答には、いくつかの問題がありました。がコレクションにラップされるのはなぜですか? オブジェクト モデルを設定するにはどうすればよいですか? また、特別な __type 属性について不平を言っていました。だから、「ハック」して「準備」した文字列:

その後、すべてがこのオブジェクトで機能しました:

今、私はWebサービスへの呼び出しを変更し、次の応答を受け取りました

これで、配列と「__type」が存在する理由がわかりました。しかし、オブジェクトを適切に解析するためにオブジェクトを記述する方法がわかりません。特別な属性を適用する必要があり、おそらく汎用配列が必要だと思いますか? 適切に逆シリアル化する方法について何か助けはありますか?

PS私はさらにハッキングを行い、それらの文字列をオブジェクト内の2つのオブジェクトに置き換えることができますが、それを処理する「適切な」方法があるかどうか疑問に思います。

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

c# - 逆シリアル化の前にコンストラクターを呼び出すにはどうすればよいですか?

データ コントラクトのシリアル化を使用して、カスタム クラスをシリアル化および逆シリアル化しようとしています。シリアル化はうまく機能します。ただし、逆シリアル化すると、次の理由で問題が発生します ( source ):

オブジェクトが逆シリアル化されるとき、コンストラクターは呼び出されません。

問題は、コンストラクターで少し初期化を行うことです。これには、いくつかのデータ構造が含まれます。

コンストラクターへの呼び出しがないと、データ構造はnull無効になり、逆シリアル化中のセッター関数の呼び出しは失敗します。

アクセサーが使用される前に、逆シリアル化プロセスの前または最中にコンストラクターを呼び出したり、オブジェクトを初期化したりするにはどうすればよいですか?

次のように、属性を介してコールバックとして宣言できるメソッドがいくつかあります (同じソース)。

しかし、それらはすべて逆シリアル化にトリガーされるようです。

XML シリアル化に切り替える必要がありますか?