INVALID JSON原语

时间:2012-11-07 13:11:30

标签: asp.net json

我收到以下错误。我浏览过论坛,似乎无法找到任何帮助。主要问题是我无法复制它,我尝试过不同的浏览器等,我无法复制它。

我只是在一些客户端机器上获取它。

[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

您能否就我在哪里找到错误提出任何建议。

我想澄清一点,我无法复制这个问题,它似乎发生在一些客户端机器上,但我无法弄清楚错误的来源是什么。

2 个答案:

答案 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,日期或对象。这可能会导致问题。找出“。”的位置。是来自,你应该能够解决序列化问题。