我下面有JSON数据
{
"appDesc": {
"description": "App description.",
"message": "Create and edit presentations "
},
"appName": {
"description": "App name.",
"message": "Slides"
}
}
我想反序列化为C#
类对象。我正在使用JsonConvert.DeserializeObject<>()
实现此功能。但是有些不起作用。
string JsonData= System.IO.File.ReadAllText(msgJSONpath);
var moreInfo = JsonConvert.DeserializeObject<appName>(msg)
internal class appName
{
public string message { get; set; }
public string description { get; set; }
}
因此 moreInfo 对象将在消息和描述中具有2个属性。
答案 0 :(得分:0)
JObject为此定义了方法Parse:
JObject json = JObject.Parse(str);
或尝试输入类型的对象,请尝试:
Foo json = JsonConvert.DeserializeObject<Foo>(str)
答案 1 :(得分:0)
您需要2个C#类,因为appName和appDesc的属性完全相同。
要存储应用名称
public class appName {
public string description { get; set; }
public string message { get; set; }
}
同时具有以上两个类作为属性的类
public class appResult {
public appName appDesc { get; set; }
public appName appName { get; set; }
public appResult() {
appDesc = new appName();
appName = new appName();
}
}
}
将json序列化
var result = JsonConvert.DeserializeObject<appResult>(msg);
一旦有了结果对象,就可以得到appName
var appName = result.appName;
答案 2 :(得分:0)
首先,您需要基于JSON创建一些类,如果您正在使用Visual Studio,则可以将JSON字符串复制到剪贴板,然后转到
编辑>选择性粘贴>将JSON作为类粘贴
否则,您可以使用This Online Tool
之后,您的代码应如下所示:
string JsonData= System.IO.File.ReadAllText(msgJSONpath);
var moreInfo = JsonConvert.DeserializeObject<RootObject>(msg);
基于JSON生成的类:
public class AppDesc
{
public string description { get; set; }
public string message { get; set; }
}
public class AppName
{
public string description { get; set; }
public string message { get; set; }
}
public class RootObject
{
public AppDesc appDesc { get; set; }
public AppName appName { get; set; }
}