問題タブ [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.

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

c# - あるマシンでは SerializationException が発生し、別のマシンでは発生しない

プロジェクトに Visual Studio 2013 と TFS を使用しています。私の同僚と私は、それぞれ Windows 8.1 と Windows 8 を搭載したマシンを持っており、どちらも同じデータベースを指しています。どちらのマシンにも最新の .NET フレームワークがインストールされています。

ナゲットパッケージMailChimp.NETを追加するまで、これまではすべて問題ありませんでした.ServiceStack.Textにも依存しています。mailchimp API呼び出しに対して、私のマシンだけで以下のエラーがスローされました

型定義は '{' で始まる必要があります。シリアル化された型 'ApiError' が必要です。取得した文字列は次で始まります:<HTML>

<HEAD>

<meta http-equiv="Content-Type" co

私は同僚のマシンで同じことを試しましたが、すべてうまくいきました。ソリューション全体をローカル マシンにコピーして貼り付けて実行しても、同じ serializationException が発生します。

これは、私のマシンだけがエラーをスローする場所です

ServiceStack.Text.Common.DeserializeTypeRefJson.StringToType (型の型、文字列 strType、EmptyCtorDelegate ctorFn、Dictionary`2 typeAccessorMap) で

このエラーが発生したために不足しているものはありますか?

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

.net - オブジェクトの配列と抽象クラスの配列の両方で動作する Json ライブラリはありますか?

XmlSerialization 属性で装飾された POCO との間で Json を読み書きする必要があります。この POCO は XSD から生成されています。ポリモーフィズム、継承、オブジェクト、オブジェクトの配列、および抽象クラスの配列を広範に使用します。私はすでに非常に有望に見えるJsonFx V2を試しましたが、残念ながらこれはうまく機能しておらず、このオープン ソース プロジェクトでは数年間ほとんど活動がありません。

どんな助けでも感謝します。

更新 1 : 私の知る限り、Json.NET は XmlSerialization 属性を処理する方法を知りません。

更新 2 : ServiceStack V3 は機能しているようですが、少なくとも 1 つの問題があります。

プロパティが object 型の場合は _type メンバーが追加されますが、これで問題ありません。しかし、オブジェクトの配列にはそのような情報はありません。

次の c# クラスを検討してください。

オブジェクトの配列 (object[]) に adxppostalCode のインスタンスが含まれている場合、シリアル化時に Json に型情報が格納されません。その結果、adxppostalCode のインスタンスではなく、ADXP クラスのインスタンスがデシリアライズ時に配列に追加されます。

これが構成の問題にすぎないことを願っています。この動作以外はうまく機能しているためです。

Udapte 3 : さらにテストした結果、Json.NET (少なくともバージョン 7.0.1 Beta 3) は属性をサポートし、オブジェクトの配列の正しい型情報を出力するようです (名前空間とライブラリ名は削除されました)。

抽象クラスの配列の場合、正しい型が出力に書き込まれます。デシリアライゼーションでは、抽象である基本型のインスタンスを作成しようとしますが、失敗します。例えば ​​:

Jsonフラグメント:

タイプ QTY のインスタンスを作成できませんでした。型はインターフェイスまたは抽象クラスであり、インスタンス化できません。

クラス階層 :

抽象クラスの配列:

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

c# - ServiceStack.Text を使用したジェネリック リストの不適切な逆シリアル化

v3 (BSD) または v4 のいずれかで発生する次の動作がバグであるかどうかを尋ねたいと思います。

一般的なリストがあります。myList.ToJson() を使用してシリアル化します。その結果、私はこれを得る:

つまり、最初の要素だけにその型が書き込まれます。その結果、これを行うと:

最初の要素として MyType を持ち、後続の要素として文字列を持つリストを取得します。そんなこと知ってる:

動作しますが、コンパイル時の型がわかりません。2 つの質問があります。

  1. これはバグですか?
  2. そうでない場合、動的解析 (つまり、JsConfig.IncludeTypeInfo) のオーバーヘッドなしで回避できる方法はありますか?

上記の理由は次のとおりです。

で:

の:

この行は、2012 年 9 月 12 日に 067ce1f62fc6addd3685a2134dd576529db2549f に追加され、プロパティのタイプ自体が削除されました。IsWritingDynamic の以前の値は、すべてのプロパティの書き込み後、つまり同じメソッドが終了する前に復元する必要があると思います。誰でもこれを確認できますか?

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

csv - ServiceStack CSV シリアライザーは、シリアル化された日付に余分な引用符を付けます

サイトで ServiceStack を使用して、ユーザーがシステムのデータセットの 1 つの csv をダウンロードできるようにしています。AppHost の構成メソッドで、DateTime のカスタム シリアライザーを提供しています。このように見えます

csv 形式を使用すると、すべての日付が結果で余分な引用符で囲まれます。たとえば、結果は """06/24/2015 16:22:16""" ですが、"06/24/2015 16:22:16" になると予想されます。

これは ServiceStack シリアライゼーションのバグに違いないように思えます。これを防ぐ方法はありますか?以下は、/csv/oneway/Request にリクエストを送信する際の問題を示す完全な例です。

および Global.asax.cs

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

servicestack - JsConfig.BeginScope とカスタム型シリアライザー

JsConfig.BeginScope を使用すると、グローバル構成に影響を与えることなく、特定の操作のシリアル化をカスタマイズできます。ただし、スコープの期間中、特定のタイプにカスタム SerializeFn を提供するにはどうすればよいですか? JsConfig< T > は常に静的で、スコープを完全に無視しているようですか?

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

json - ServiceStack.Text には Json シリアライザー/デシリアライザーのサイズ制限がありますか?

Service-stack.Text には Json Serialize/DeSerialize のサイズ制限がありますか?

Json シリアライゼーションとデシリアライゼーションにサイズ制限があることを知りたいです。これに基づいて、オブジェクト コレクションを入力として送信したくありません。

ありがとうございました

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

c# - Json 名が不正な ServiceStack.Text および DeserializeFromString

ServiceStack.Text DeserializeFromString を長い間使用してきましたが、新しいプロジェクトで問題が発生しました。

オブジェクトに解析する必要がある JSON の形式は次のとおりです。

そのため、オブジェクト名には URL がプレフィックスとして付けられているため、それをクラス メンバー名と照合することはできません。名前をマップするために DataContract を使用しようとしましたが、null オブジェクトを返すだけです。

ServiceStack.Text を使用してこれを行う別の方法はありますか、または JSON を手動で解析する必要がありますか?

どんな助けでも大歓迎です。

編集:

少し遊んで、DataContract 属性を使用してこの問題を解決することができました。指定したクラスのプレフィックスが正しくなかったため、以前は失敗していました。私はそれを次のように解決することができました: