問題タブ [servicestack-text]
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.
c# - ServiceStack.Text および DeserializeFromString
私はおそらく本当に簡単なことを忘れていることを認めていますが、それが何であるかを理解することはできません
私はクラスを持っています:
次に、Url から Json 文字列を取得し、次のように逆シリアル化しようとします。
json
文字列は次のとおりです。
またはC#に慣れていない人向け
返されるオブジェクトは次のとおりです。
私は何が欠けていますか?
servicestack-text - ServiceStack vs StackExpress & 非プレリリース バージョンの StackExpress
StackExpress と ServiceStack の唯一の違いは、.net 4 の動的処理であるかどうか疑問に思っていました。これは StackExpress にありますが、ServiceStack にはありません。(具体的には servicestack.text )
そのため、StackExpress は非プレリリースになるのでしょうか? そうでない場合、stackexpress の .net 4 動的機能はメインの servicestack.text ライブラリで利用できますか?
(servicestack の動的機能は必要ですが、リリース バージョンとして stackexpress がないと、ストレートなパッケージ ビルドが妨げられます)
f# - F# は、識別された共用体のコンパイル済みフォームを認識していますか?
F# の識別共用体は抽象クラスにコンパイルされ、そのオプションは入れ子になった具象クラスになります。
DU は抽象的ですが、DU.A と DU.B は具体的です。
ServiceStack を使用すると、型の JSON 文字列へのシリアル化とその逆のシリアル化を関数でカスタマイズできます。DU 型に関しては、C# で行う方法を次に示します。
F# は、識別された共用体のコンパイル済みフォームを認識していますか? コンパイル時に F# で DU.A の型を取得するにはどうすればよいですか?
F# で逆シリアル化する関数を簡単に登録できます。
具体的な型 DU.A および DU.B のシリアル化関数を完全に F# に登録することは可能ですか?
servicestack - ServiceStack Json シリアライザーはプロパティを無視します
応答ペイロードで許可されたプロパティのみを送信するというビジネス要件があります。たとえば、応答 DTO には複数のプロパティがあり、そのうちの 1 つが SSN です。ユーザーが SSN を表示する権限を持っていない場合、Json 応答に含めたくありません。2 番目の要件は、クライアントがプロパティを表示または変更する権限を持っている場合、null 値を送信することです。2 番目の要件が設定されているため、ユーザーが null に表示できないプロパティは機能しません。null 値を返す必要があります。
うまくいく解決策があります。DTO を反映して expandoObject を作成し、必要なプロパティのみを追加します。これは私のテストで機能しています。
ITextSerializer の実装を見てきました。それを使用して、スキップするプロパティのリストを持つ別のオブジェクトに応答 DTO をラップすることができます。次に、独自の SerializeToString() と SerializeToStream() をロールすることができます。現時点では、他に方法はありません。スキップするプロパティがリクエストごとに変わるため、JsConfig を使用して SerializeFn を作成することはできません。
したがって、ITextSerializer を実装することは良い選択肢だと思います。これが実装されている良い例はありますか? シリアライザーですでに行われたすべてのハードワークを使用して、優れたパフォーマンスを活用したいと思います。理想的な世界では、見るために WriteType.WriteProperties() にチェックを追加するだけで済み、プロパティは書き込む必要があると思いますが、それは内部的なものであり、実際にはほとんどのものなので、実際には取ることができませんそれらの利点。
誰かが洞察力を持っているなら、私に知らせてください!多分私は ITextSerialzer の実装を実際よりもずっと難しくしているでしょうか?
ありがとう!
プル リクエスト#359は、プロパティ「ExcludePropertyReference」を JsConfig および JsConfigScope に追加しました。必要に応じて、スコープ内の参照を除外できるようになりました。
c# - ServiceStack Json Serializer を使用して、json 文字列から逆シリアル化されたオブジェクトのコンストラクターが必要ないのはなぜですか?
json 文字列を .Net/C# クラス オブジェクト インスタンスに逆シリアル化するためにコンストラクターが必要ないのはなぜだろうか。コンストラクターがまったく呼び出されずに削除され、デシリアライザーがまだ json 文字列からオブジェクト インスタンスを作成していることに驚きました。これは正常ですか?
(ServiceStack の json シリアライザーを使用しています)
servicestack - JSON の代わりに JSV を返す ServiceStack
ServiceStack で作成されたサービスがあります。最近、ServiceStack ライブラリを更新したところ、JSON 応答ではなく JSV 応答を取得するようになりました。
リクエストは次のようになります。
そして、応答は次のようになります。
読みやすくするために、応答の JSV を少し切り詰めていることに注意してください。そのため、この例では Content-Length が正しくありません。
私が理解していることから、ServiceStack のデフォルトの ContentType はJSONである必要があります
では、なぜ application/json の ContentType で JSV を取得しているのですか?
編集:
私のリクエストdtoは次のようになります。
私のサービスは次のようになります。
私の Poll レスポンスは次のようになります。
json - Fiddler/REST コンソールから送信された ServiceStack サービス メッセージで引用符が失われる
RestConsole / Fiddler で、次の RAW JSON Body を送信します
ボディタイプが に設定されていapplication/json
ます。今、私はこのようなエンティティを持っています
Payload プロパティには次の文字列があります。
クエスチョン マーク ( "
) がすべて欠落しています。
私は何を間違っていますか?リクエストボディを正しく記述するにはどうすればよいですか?