【发布时间】:2015-06-17 21:33:51
【问题描述】:
我正在尝试反序列化我必须针对我拥有的模型类的 json 数据
Json:
"{'test':'1339886'}"
类:
public class NewtonTest
{
public Element test { get; set; }
}
public class Element
{
public string sample { get; set; }
}
在主类中:
//under Main
string jsonData = "{'test':'1339886'}";
var = JsonConvert.DeserializeObject<NewtonTest>(jsonData);
错误信息: //内部异常
无法从 System.String 转换或转换为 Test.Element。”
当我在json 中传递string 时,我完全知道错误状态是什么,而在课堂上我有一个class 作为类型(发生不匹配)。
在这种情况下,我需要处理错误,如果输出不匹配,可能会放置一个空值,但它不应该抛出异常。
我已尽力通过settings 阅读文档和设置选项,但似乎没有任何效果。
我使用的是 Newtonsoft.Json 4.5 版
【问题讨论】:
-
比用try/catch包围代码;捕获确切的异常;并对对象做任何你想做的事情。
-
您可能需要查看 Custom Conversion 或通过使用
JsonConvert.DeserializeObject<dynamic>(jsonData);来利用动态,然后执行另一个过程将该动态转换为完全限定的对象(在您的情况下为 NewtonTest)。 -
您的类结构与您的 JSON 不匹配。为什么不创建有效的 JSON?
-
如果您的 json 数据匹配,它将正常工作。 var jsonData = "{\"test\": {\"sample\": \"1339886\"}}";
-
是的,如果 json 数据完全匹配,一切都会正常工作。但是有可能出现这样的数据,我应该处理它,这就是这种情况。可能是 100 次中的 1 次。我不应该让它碰运气,json数据来自用户上传
标签: c# asp.net-mvc-4 json.net