我遇到了将JSON反序列化为对象的问题。我读了几个答案,但没有一个能帮助我 这是我的JSON文件:
{
"meta": {
"status": 200,
"msg": "OK"
},
"response": {
"blog": {
"title": "title",
"name": "name",
"url": "url"
}
}
}
这是我的班级:
public class TextInfo
{
public class Meta
{
public int status { get; set; }
public string msg { get; set; }
}
public class Blog
{
public string title { get; set; }
public string name { get; set; }
public string url { get; set; }
}
public class Response
{
public Blog blog { get; set; }
}
public class RootObject
{
public Meta meta { get; set; }
public Response response { get; set; }
}
}
现在,我试图像这样反序列化json,但我不知道如何操作数据:
TextInfo txt = JsonConvert.DeserializeObject<TextInfo>(json);
你可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
唯一的区别是TextInfo应该包含Meta和Response:
public class TextInfo
{
public Meta meta { get; set; }
public Response response { get; set; }
}
public class Meta
{
public int status { get; set; }
public string msg { get; set; }
}
public class Blog
{
public string title { get; set; }
public string name { get; set; }
public string url { get; set; }
}
public class Response
{
public Blog blog { get; set; }
}
你像你说的那样反序列化:
TextInfo txt = JsonConvert.DeserializeObject<TextInfo>(json);
答案 1 :(得分:0)
三件事:
可以提供错误消息/日志,
你只解析一个项目还是多个项目?在第二种情况下:var txt = JsonConvert.DeserializeObject<List<TextInfo>>(JSONstr);
请尝试以下操作:
public class Meta
{
public int status { get; set; }
public string msg { get; set; }
}
public class Response
{
public Blog blog { get; set; }
}
public class Blog
{
public string title { get; set; }
public string name { get; set; }
public string url { get; set; }
}
public class TextInfo
{
public Meta meta { get; set; }
public Response response { get; set; }
}
答案 2 :(得分:0)
您的TextInfo
类中没有任何要反序列化的属性。它只宣布另一个类。
根据您的消息来源,您应该反序列化为RootObject
。这将返回一个包含meta
和response
属性的实例。
然后你就可以访问它们了:
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
Console.WriteLine(obj.meta.msg);