需要将json之后的(Deserialize)转换为C#对象 [英] Need to convert(Deserialize) following json into C# object

查看:192
本文介绍了需要将json之后的(Deserialize)转换为C#对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在C#对象中按照json格式转换(反序列化)? 所有这些json文本一次转换(反序列化)或我需要一次又一次地转换子对象

How to convert(deserialize) following json format in C# object? All this json text convert(deserialize) in one go or I need to convert child object again and again

我正在尝试类似

var x = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(json_data);


{  
   "Id":"1405de4d-2823-43b4-8dba-66c2714bc7f",
   "Name":"Sports/Boxing",

   "Parent":{  
      "Id":"88ada251-cff1-4eb7-bc47-2e6d366616a63",
      "Name":"http://localhost:80/PDC/Sports/Boxing",
      "DurationMilliseconds":227.2,
      "StartMilliseconds":0,
      "Children":[  
         {  
            "Id":"dbf36d18-8abd-43f1-ae9b-640cb3d77a87",
            "Name":"xx",
            "DurationMilliseconds":212,
            "Milliseconds":15.1,
           l
}

推荐答案

使用 http://jsonclassgenerator.codeplex.com/和手动调整,我将所需的类减少到2个(root和childs类实际上是相同的):

Using http://jsonclassgenerator.codeplex.com/ and manual tuning, I've reduced the needed classes to 2 (root and childs classes are actually the same):

请注意,您可以为您的类指定任何名称,使得与JSON链接的是每个属性上方的[JsonProperty("...")]属性.

Note that you can give any name to your classes, what makes the link with the JSON are the [JsonProperty("...")] attribute above each property.

using System;
using Newtonsoft.Json;

namespace WpfApplication3
{
    public partial class MainWindow
    {
        private readonly string json = @"
{  
   ""Id"":""1405de4d-2823-43b4-8dba-66c2714bc7f"",
   ""Name"":""Sports/Boxing"",
   ""Started"":""\/Date(1472064057630)\/"",
   ""DurationMilliseconds"":227.2,
   ""MachineName"":""RED"",
   ""CustomLinks"":null,
   ""Root"":{  
      ""Id"":""88ada251-cff1-4eb7-bc47-2e6d366616a63"",
      ""Name"":""http://localhost:80/PDC/Sports/Boxing"",
      ""DurationMilliseconds"":227.2,
      ""StartMilliseconds"":0,
      ""Children"":[  
         {  
            ""Id"":""dbf36d18-8abd-43f1-ae9b-640cb3d77a87"",
            ""Name"":""Red Eagle"",
            ""DurationMilliseconds"":212,
            ""StartMilliseconds"":15.1,
            ""Children"":[  
               {  
                  ""Id"":""dbd7018d-421d-42bd-b0e5-fd3e9462cca0"",
                  ""Name"":""Blue Eagle"",
                  ""DurationMilliseconds"":106.8,
                  ""StartMilliseconds"":120.4,
                  ""Children"":[  
                     {  
                        ""Id"":""c86199e0-d12b-4bd0-90ea-9f15a2618160"",
                        ""Name"":""True Eagle"",
                        ""DurationMilliseconds"":0.3,
                        ""StartMilliseconds"":226.9,
                        ""Children"":null,
                        ""CustomTimings"":null
                     }
                  ],
                  ""CustomTimings"":null
               }
            ],
            ""CustomTimings"":null
         }
      ],
      ""CustomTimings"":null
   },
   ""ClientTimings"":null,
   ""User"":""::1"",
   ""Storage"":null
}";

        public MainWindow()
        {
            InitializeComponent();
            var o = JsonConvert.DeserializeObject<MyObject>(json);
        }
    }

    public class Child
    {
        [JsonProperty("Id")]
        public string Id { get; set; }

        [JsonProperty("Name")]
        public string Name { get; set; }

        [JsonProperty("DurationMilliseconds")]
        public double DurationMilliseconds { get; set; }

        [JsonProperty("StartMilliseconds")]
        public double StartMilliseconds { get; set; }

        [JsonProperty("Children")]
        public Child[] Children { get; set; }

        [JsonProperty("CustomTimings")]
        public object CustomTimings { get; set; }
    }

    public class MyObject
    {
        [JsonProperty("Id")]
        public string Id { get; set; }

        [JsonProperty("Name")]
        public string Name { get; set; }

        [JsonProperty("Started")]
        public DateTime Started { get; set; }

        [JsonProperty("DurationMilliseconds")]
        public double DurationMilliseconds { get; set; }

        [JsonProperty("MachineName")]
        public string MachineName { get; set; }

        [JsonProperty("CustomLinks")]
        public object CustomLinks { get; set; }

        [JsonProperty("Root")]
        public Child Root { get; set; }

        [JsonProperty("ClientTimings")]
        public object ClientTimings { get; set; }

        [JsonProperty("User")]
        public string User { get; set; }

        [JsonProperty("Storage")]
        public object Storage { get; set; }
    }
}

这篇关于需要将json之后的(Deserialize)转换为C#对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆