我将反序列化的json文件的结构如下所示;
{ "id" : "1lad07", "text" : "test", "url" : "http:\/\/twitpic.com\/1lacuz", "width" : 220, "height" : 84, "size" : 8722, "type" : "png", "timestamp" : "Wed, 05 May 2010 16:11:48 +0000", "user" : { "id" : 12345, "screen_name" : "twitpicuser" } }
我创建了一个类,该类具有文件名作为JavaScriptSerializer的属性。我将用于反序列化json的代码如下;
``` using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) {
var responseBody = reader.ReadToEnd(); var deserializer = new JavaScriptSerializer(); var results = deserializer.Deserialize<Response>(responseBody); }
我的问题是如何读取json文件中的用户字段。如下所示;
"user" : { "id" : 12345, "screen_name" : "twitpicuser" }
它具有子属性和值。如何在我的Response类中为它们命名。我的回应类别现在看起来像这样;
public class Response { public string id { get; set; } public string text { get; set; } public string url { get; set; } public string width { get; set; } public string height { get; set; } public string size { get; set; } public string type { get; set; } public string timestamp { get; set; } }
```
最好的情况是什么?
User
public class Response { public string id { get; set; } public string text { get; set; } public string url { get; set; } public string width { get; set; } public string height { get; set; } public string size { get; set; } public string type { get; set; } public string timestamp { get; set; } public User user { get; set; } } public class User { public int id { get; set; } public string screen_name { get; set; } }
通常,您应该确保json的属性类型与CLR类匹配。 您尝试反序列化的结构似乎包含多个数字值(很可能是int)。我不确定JavaScriptSerializer能否将数字反序列化为字符串字段,但是无论如何,您都应尝试使CLR类型尽可能接近实际数据。
int
JavaScriptSerializer