【发布时间】:2012-10-30 07:08:34
【问题描述】:
我使用 Json.NET (http://james.newtonking.com/projects/json/help/) 作为从服务器序列化和反序列化 JSON 的一种方式。假设我有以下 JSON 对象:
{
"user" : {
"name" : "Bob",
"age" : 35
},
"location" : "California"
}
我能找到将其反序列化为本机类型的唯一方法是使用自定义 DTO,如下所示:
string jsonString = ""; // json string from above
Response result = JsonConvert.DeserializeObject<Response> (jsonString);
Response 类看起来像这样:
public class Response
{
[JsonProperty("user")]
public UserResponse User { get; set; }
[JsonProperty("location")]
public string Location { get; set; }
}
public class UserResponse
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("age")]
public int Age { get; set; }
}
我想将其反序列化为本机类型,但我所处的环境并不总是知道 JSON 字符串的外观......所以当我不确切知道时很难使用自定义 DTO我在管什么。如果我没有将任何类传递给 JsonConvert.DeserializeObject(),那么我最终会得到 Json.NET 类型,而不是字符串、整数等原生类型。关于如何解决这个问题的任何建议?我应该改用其他 JSON 库吗?
谢谢!
【问题讨论】:
-
您不会得到强类型的结果,但请参阅这些文章:stackoverflow.com/questions/3142495/… 和 blog.petegoo.com/index.php/2009/10/26/… 您可以反序列化为匿名/expando/动态对象。
-
您的问题与 json 库无关。
I don't always know what the JSON string will look like;那么你不能将它反序列化为类型安全的类