3

次のエラーが発生します。フォーラムを調べましたが、助けが見つからないようです。主な問題は、複製できないこと、別のブラウザなどで試したことがあり、複製できないことです。

いくつかのクライアントマシンでしか取得できません。

[ArgumentException: Invalid JSON primitive: .]
   System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() +930307
   System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) +376
   System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer) +120
   System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit) +57
   Telerik.Web.UI.RadButton.LoadPostData(String postDataKey, NameValueCollection postCollection) +238
   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +1018
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2653

エラーを見つけるためにどこを探すことができるかについて、何か提案をいただけますか。

この問題を再現できないことを明確にしたいのですが、いくつかのクライアントマシンで発生しているようですが、エラーの原因を特定できません。

4

2 に答える 2

2

問題は、JSON応答のピリオド(。)ではない可能性があります。実際のJSON応答文字列を確認し、無関係な文字が含まれていないかどうかを確認します。私にとって、JSONオブジェクトを囲む予期しないメソッド名がありました。

string json = "WeirdMethodName({...});"

無関係なメソッド名を削除する必要がありました。

var json = client.DownloadString(apiUrl);
json = json.Replace("WeirdMethodName(", "").Replace(");","");
var serializer = new JavaScriptSerializer();
var someModel = serializer.Deserialize<SomeModel>(json);
于 2013-01-14T22:18:26.770 に答える
0

ちょうど期間である値がどこかにあるように見えます。文字列、int、日付、またはオブジェクトではありません。これが問題の原因である可能性があります。「。」がどこにあるかを調べます。から来ており、シリアル化の問題を解決できるはずです。

于 2012-11-07T13:18:46.473 に答える