我收到以下错误。我浏览过论坛,似乎无法找到任何帮助。主要问题是我无法复制它,我尝试过不同的浏览器等,我无法复制它。
我只是在一些客户端机器上获取它。
[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
您能否就我在哪里找到错误提出任何建议。
我想澄清一点,我无法复制这个问题,它似乎发生在一些客户端机器上,但我无法弄清楚错误的来源是什么。
答案 0 :(得分: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);
答案 1 :(得分:0)
看起来你的某个地方只有一个时期。不是字符串,int,日期或对象。这可能会导致问题。找出“。”的位置。是来自,你应该能够解决序列化问题。