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

json - Windows Phone - バックグラウンド タスク - DataContractJsonSerializer.WriteObject で破損

Windows Phone Mango でバックグラウンド タスクを使用しています。JSON 形式を使用してサーバーにデータを送信する必要があります。しかし、DataContractJsonSerializer.WriteObject 関数を実行すると、その後何も起こりません。

Windows Phone Mango のバックグラウンド タスクで同じことを経験した人はいますか?

0 投票する
3 に答える
3331 参照

.net - 辞書のシリアライズDataContractJsonSerializer を使用して JSON に変換

を使用して JSON にシリアル化するオブジェクト ツリーがありますDataContractJsonSerializerDictionary<TKey, TValue>シリアル化されますが、マークアップが好きではありません-アイテムは次のようにレンダリングされません:

KeyValuePair<TKey, TValue>シリアル化されたオブジェクトの配列のようなものです。

醜いですね。

そのため、汎用 Dictionary を を実装するカスタム オブジェクトにラップすることでこれを回避しISerializable、カスタム シリアル化をGetObjectDataメソッドに実装します (わずか 3 行で済みます)。

ここでの問題 - クラスを から派生させることができないため、Dictionary<TKey, TValue>すべてのロジック ( 、 など) をカスタム クラスに実装AddClear、プライベートDictionary<TKey, TValue>フィールドに適用します。カスタム オブジェクトを使用するときに、すべての一般的な Dictionary 機能を自由に使用できるため、継承が望ましいでしょう。

継承の問題は、独自にDictionary<TKey, TValue>実装することであり、次のようにカスタム クラスから明示的に実装したとしても、この実装を好むようです。ISerializableDataContractJsonSerializerISerializable

明らかに明示的なインターフェイス実装を使用できなくても、同じインターフェイスを 2 回実装できるため、これが可能であることに実際に驚きました。そのため、複数のインターフェイスの実装に関するブログ投稿で状況をより詳細に分析しました。

したがって、そこで行った実験によると、内部で使用されているキャストのタイプに関係なく、シリアライザーは ISerializable の実装を呼び出す必要があります-

また:

KeyValuePair<TKey, TValue>しかし、シリアライザーがまだ呼び出されている結果のJSONでわかるように、それは明らかに起こっていません。私が行方不明になっていると何が起こっているのでしょうか?

更新: これまでに得た回答とコメントは、回避策を示唆しているだけです。ただし、非常にうまく機能する回避策があることに注意してください。この質問をすることで、2つの目的があります。

  1. 最終的には元の設計で動作するようにします。そのためだけにシリアライゼーション ロジックを変更するつもりはありません。多くのコードとロジックが依存しています。

  2. なぜシリアライゼーション コードを使用しないのかという謎を解明するために、DataContractJsonSerializer参照したブログ投稿に見られるように、インターフェイスの実装と継承についてあらゆる種類の実験を行い、すべての実装を把握していると確信していました。プロセスから外れたので、この場合何が起こっているのか理解できずに困っています

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

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も同じようにディスク容量が必要ですか?

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

c# - [DataContract]へのJSONサンプル

JSONサンプルに基づいてDataContractエンティティ定義を生成できるツールはありますか?コード生成機能を備えた古い優れたWSDLメタデータが本当に不足しています。

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

json - 不明なフィールドを持つJSONオブジェクトの逆シリアル化

質問は不明なフィールドを使用したJSONの逆シリアル化に似ていますが、代わりに組み込みのDataContractJsonSerializerを使用したいと思います。

だから私はそのようなJSONデータを持っています:

私はそのようなデータ契約を行うことができると思いました:

そして、TwoStringMembersClassはまさにこれです:

しかし、JSON.Netで機能するように見えるものは、ネイティブJSONパーサーではそれほど簡単には機能しないようです。ReadObject()で、おそらくディクショナリが原因でArgumentExceptionが発生します。

これを機能させるための最良の解決策は何ですか?

前もって感謝します。

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

json - Silverlight 4 DataContractJsonSerializer、派生クラスのプライベート フィールド

DataContractJsonSerializer を使用して、Silverlight 4 で json データを逆シリアル化します。Json データのキー名がクラス プロパティ名と一致しません。したがって、DataMemberAttribute を使用する必要があると思います。だから私は次のことをしました:

Person の基本クラス Model に DataContractAttribute を適用しなかったため、デシリアライズが失敗しました。厳しい要件ですか?また、DataContractAttribute を Model に適用した後、DataMember 属性をパブリック プロパティではなくプライベート フィールドに適用したため、逆シリアル化が再び失敗しました。それらをプライベートメンバーに適用できないのはなぜですか(ドキュメントにはそうではないようです)。

注: サーバー側のコードは ASP.NET ではありません。したがって、WCF は使用されません。

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

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を考えましたが、もっとエレガントな方法があると思います。

どうすればいいのか提案してもらえますか?

0 投票する
3 に答える
6946 参照

c# - C# での JSON キーと値のペアの解析

C#でのJSONの解析を参照して

次のJSON フィードを C# で解析しようとしていますが、"rates" のデータへのアクセスに問題があります。これを List> または Dictionary およびその他のさまざまなタイプに逆シリアル化しようとしましたが、常に 0 の結果が得られます。私がそれを機能させる唯一の方法は、カスタムタイプを作成し、必要なすべての通貨をプロパティとして持つことでした-これは非常に素晴らしいことです.

これが私の現在のDataContractsです:

RatesObj を何らかのコレクションに置き換えたいと思っています。

何か案は?

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

arrays - DataContractJsonSerializer WP7を使用して、配列をJson文字列として解析します

DataContractJsonSerializerを使用してJson文字列の配列の要素を解析するにはどうすればよいですか?構文は次のとおりです。

0 投票する
4 に答える
25818 参照

c# - DataContractJsonSerializer - リスト内の DateTime の逆シリアル化

I'm having trouble using the System.Ru

I'm having trouble using the System.Runtime.Serialization.Json.DataContractJsonSerializer class to deserialize DateTime instances contained within a List<object>. I cannot seem to get DateTime to deserialize back into the original type. The DataContractJsonSerializer always deserializes it into a string type with the format "/Date(1329159196126-0500)/". It'll serialize and deserialize fine if I run it through using a strongly typed List<DateTime>, however I am looking for way to get the serializer to identify and properly deserialize DateTimes when encountered within a simple list or array of object.

Note that DateTimes are the only type besides primitives and strings that this list will ever contain. Here is the code snippet I'm using to test this.


Errno : 13 on using fopen on proc entry

I am trying to write a /proc file created by a loadable kernel module. I am using fopen() to open the file for write but am getting errno : 13 (permission denied).

Any suggestions on how to overcome this?

Thanks.