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

看起来你在某个地方有一个值,只是一个句号。不是字符串、整数、日期或对象。这可能会导致问题。找出“。”在哪里 来自,您应该能够解决序列化问题。

于 2012-11-07T13:18:46.473 回答