将JSON转换为C#POCO

时间:2018-11-20 06:48:12

标签: c# json

我下面有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个属性。

3 个答案:

答案 0 :(得分:0)

JObject为此定义了方法Parse:

JObject json = JObject.Parse(str);

或尝试输入类型的对象,请尝试:

Foo json  = JsonConvert.DeserializeObject<Foo>(str)

答案 1 :(得分:0)

您需要2个C#类,因为appName和appDesc的属性完全相同。

  1. 要存储应用名称

    public class appName {
      public string description { get; set; }
      public string message { get; set; }
    }
    
  2. 同时具有以上两个类作为属性的类

    public class appResult {
      public appName appDesc { get; set; }
      public appName appName { get; set; }
    
      public appResult() {
        appDesc = new appName();
        appName = new appName();
      }
    }
    }
    
  3. 将json序列化

    var result = JsonConvert.DeserializeObject<appResult>(msg);
    
  4. 一旦有了结果对象,就可以得到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; }
}