問題タブ [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.
json - Windows Phone - バックグラウンド タスク - DataContractJsonSerializer.WriteObject で破損
Windows Phone Mango でバックグラウンド タスクを使用しています。JSON 形式を使用してサーバーにデータを送信する必要があります。しかし、DataContractJsonSerializer.WriteObject 関数を実行すると、その後何も起こりません。
Windows Phone Mango のバックグラウンド タスクで同じことを経験した人はいますか?
.net - 辞書のシリアライズDataContractJsonSerializer を使用して JSON に変換
を使用して JSON にシリアル化するオブジェクト ツリーがありますDataContractJsonSerializer。Dictionary<TKey, TValue>シリアル化されますが、マークアップが好きではありません-アイテムは次のようにレンダリングされません:
KeyValuePair<TKey, TValue>シリアル化されたオブジェクトの配列のようなものです。
醜いですね。
そのため、汎用 Dictionary を を実装するカスタム オブジェクトにラップすることでこれを回避しISerializable、カスタム シリアル化をGetObjectDataメソッドに実装します (わずか 3 行で済みます)。
ここでの問題 - クラスを から派生させることができないため、Dictionary<TKey, TValue>すべてのロジック ( 、 など) をカスタム クラスに実装AddしClear、プライベートDictionary<TKey, TValue>フィールドに適用します。カスタム オブジェクトを使用するときに、すべての一般的な Dictionary 機能を自由に使用できるため、継承が望ましいでしょう。
継承の問題は、独自にDictionary<TKey, TValue>実装することであり、次のようにカスタム クラスから明示的に実装したとしても、この実装を好むようです。ISerializableDataContractJsonSerializerISerializable
明らかに明示的なインターフェイス実装を使用できなくても、同じインターフェイスを 2 回実装できるため、これが可能であることに実際に驚きました。そのため、複数のインターフェイスの実装に関するブログ投稿で状況をより詳細に分析しました。
したがって、そこで行った実験によると、内部で使用されているキャストのタイプに関係なく、シリアライザーは ISerializable の実装を呼び出す必要があります-
また:
KeyValuePair<TKey, TValue>しかし、シリアライザーがまだ呼び出されている結果のJSONでわかるように、それは明らかに起こっていません。私が行方不明になっていると何が起こっているのでしょうか?
更新: これまでに得た回答とコメントは、回避策を示唆しているだけです。ただし、非常にうまく機能する回避策があることに注意してください。この質問をすることで、2つの目的があります。
最終的には元の設計で動作するようにします。そのためだけにシリアライゼーション ロジックを変更するつもりはありません。多くのコードとロジックが依存しています。
なぜシリアライゼーション コードを使用しないのかという謎を解明するために、
DataContractJsonSerializer参照したブログ投稿に見られるように、インターフェイスの実装と継承についてあらゆる種類の実験を行い、すべての実装を把握していると確信していました。プロセスから外れたので、この場合何が起こっているのか理解できずに困っています
c# - XmlSerializer が一時ファイルを保存する最も安全な場所
XmlSerializer は入札を行うためにディスク領域を使用する必要があることに気付きました。書き込み可能な %temp% フォルダーがない場合、次のエラーで失敗します。
Source : System.Xml Message : Unable to generate a temporary class (result=1). error CS2001: Source file 'C:\Windows\TEMP\c1ls4elp.0.cs' could not be found error CS2008: No inputs specified StackTrace : at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence) at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies) at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) at StreamLib.Tuna.SerializationHelper.Deserialize[T](String presetsString) ...
参考までに、の実装はStreamLib.Tuna.SerializationHelper.Deserialize[T]次のようになります。
フォルダーのアクセス許可を変更することは、危険なシリアライザーのパッチではなく、ユーザーに任せるのが最善だと思うので、代わりに、シリアライザーを別の場所に置いて、がらくたを書くことで問題を解決したいと考えています。これは、以下を に追加することで実現できますapp.config/web.config。
私の質問は、一部のクライアント マシンで失敗しない、この設定に使用できる防弾の場所はありますか? そうでない場合、私の代替手段は何ですか?にDataContractJsonSerializerも同じようにディスク容量が必要ですか?
c# - [DataContract]へのJSONサンプル
JSONサンプルに基づいてDataContractエンティティ定義を生成できるツールはありますか?コード生成機能を備えた古い優れたWSDLメタデータが本当に不足しています。
json - 不明なフィールドを持つJSONオブジェクトの逆シリアル化
質問は不明なフィールドを使用したJSONの逆シリアル化に似ていますが、代わりに組み込みのDataContractJsonSerializerを使用したいと思います。
だから私はそのようなJSONデータを持っています:
私はそのようなデータ契約を行うことができると思いました:
そして、TwoStringMembersClassはまさにこれです:
しかし、JSON.Netで機能するように見えるものは、ネイティブJSONパーサーではそれほど簡単には機能しないようです。ReadObject()で、おそらくディクショナリが原因でArgumentExceptionが発生します。
これを機能させるための最良の解決策は何ですか?
前もって感謝します。
json - Silverlight 4 DataContractJsonSerializer、派生クラスのプライベート フィールド
DataContractJsonSerializer を使用して、Silverlight 4 で json データを逆シリアル化します。Json データのキー名がクラス プロパティ名と一致しません。したがって、DataMemberAttribute を使用する必要があると思います。だから私は次のことをしました:
Person の基本クラス Model に DataContractAttribute を適用しなかったため、デシリアライズが失敗しました。厳しい要件ですか?また、DataContractAttribute を Model に適用した後、DataMember 属性をパブリック プロパティではなくプライベート フィールドに適用したため、逆シリアル化が再び失敗しました。それらをプライベートメンバーに適用できないのはなぜですか(ドキュメントにはそうではないようです)。
注: サーバー側のコードは ASP.NET ではありません。したがって、WCF は使用されません。
c#-4.0 - DataContract(IsReference = true)で装飾されたクラスから派生したクラスをシリアル化するにはどうすればよいですか?
私はclass Aそれから派生していSystem.Data.Objects.DataClasses.EntityObjectます。を使用してシリアル化しようとすると
エラーが発生します
TestController+A._Id' is not marked with OptionalFieldAttribute, thus indicating that it must be serialized. However, 'TestController+A' derives from a class marked with DataContractAttribute and an IsReference setting of 'True'. It is not possible to have required data members on IsReference classes. Either decorate 'TestController+A._Id' with OptionalFieldAttribute, or disable the IsReference setting on the appropriate parent class.
でフィールドを飾ってOptionalFieldAttributeも
The type 'TestController+A' cannot be serialized to JSON because its IsReference setting is 'True'. The JSON format does not support references because there is no standardized format for representing references. To enable serialization, disable the IsReference setting on the type or an appropriate parent class of the type.
EntityObjectクラスを変更できません。A_Bagクラスをクラスとまったく同じように作成しA、それを埋めて、代わりにシリアル化することAを考えましたが、もっとエレガントな方法があると思います。
どうすればいいのか提案してもらえますか?
c# - C# での JSON キーと値のペアの解析
C#でのJSONの解析を参照して
次のJSON フィードを C# で解析しようとしていますが、"rates" のデータへのアクセスに問題があります。これを List> または Dictionary およびその他のさまざまなタイプに逆シリアル化しようとしましたが、常に 0 の結果が得られます。私がそれを機能させる唯一の方法は、カスタムタイプを作成し、必要なすべての通貨をプロパティとして持つことでした-これは非常に素晴らしいことです.
これが私の現在のDataContractsです:
RatesObj を何らかのコレクションに置き換えたいと思っています。
何か案は?
arrays - DataContractJsonSerializer WP7を使用して、配列をJson文字列として解析します
DataContractJsonSerializerを使用してJson文字列の配列の要素を解析するにはどうすればよいですか?構文は次のとおりです。