Json反序列化为类

本文关键字:反序列化 Json | 更新日期: 2023-09-27 18:25:20

我有动态json结果,我想为该json字符串创建一个对象。之后,我将用反序列化的对象填充该对象。这是json字符串:

[{"_34":{
   "Id":"34",
   "Z":["42b23718-bbb8-416e-9241-538ff54c28c9","c25ef97a-89a5-4ed7-89c7-9c6a17c2413b"],
   "C":[]
   }
}]

这个物体看起来怎么样?或者如何将此字符串反序列化为类。

谢谢。

Json反序列化为类

如果您喜欢开源,可以使用开箱即用的JavaScriptSerializer或json.net。

根据Darin Dimitrov的样本,以下是如何使用json.net:

using System.Collections.Generic;
using System;
using Newtonsoft.Json;
namespace ConsoleApplication1
{
   class Program
   {
          static void Main(string[] args)
          {
              string json = "[{'"_34'":{ '"Id'":'"34'", '"Z'":['"42b23718-bbb8-416e-9241-538ff54c28c9'",'"c25ef97a-89a5-4ed7-89c7-9c6a17c2413b'"], '"C'":[] } }]";
              var result = JsonConvert.DeserializeObject<Dictionary<string, Result>[]>(json);
              Console.WriteLine(result[0]["_34"].Z[1]);
           }
   }
   public class Result
   {
        public string Id { get; set; }
        public string[] Z { get; set; }
        public string[] C { get; set; }
   }
}

这里有一个例子:

using System;
using System.Collections.Generic;
using System.IO;
using System.Web.Script.Serialization;
public class Result
{
    public string Id { get; set; }
    public string[] Z { get; set; }
    public string[] C { get; set; }
}
class Program
{
    static void Main()
    {
        var json = @"[{""_34"": {""Id"": ""34"",""Z"": [""42b23718-bbb8-416e-9241-538ff54c28c9"",""c25ef97a-89a5-4ed7-89c7-9c6a17c2413b""],""C"": []}}]";
        var serializer = new JavaScriptSerializer();
        var result = serializer.Deserialize<Dictionary<string, Result>[]>(json);
        Console.WriteLine(result[0]["_34"].Z[1]);
    }
}

目标类

public class Target
{
    public string Id;
    public List<string> Z;
    public List<string> C;
}

反序列化

var ser = new JavaScriptSerializer();
var obj = ser.Deserialize<Target>(json);

在eval函数中包装字符串:

var myObject = eval('(' + myJSONtext + ')');