Json反序列化为一个类

时间:2012-02-22 12:34:41

标签: c# json deserialization

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

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

对象是怎样的?或者我如何将此字符串反序列化为类。

感谢。

4 个答案:

答案 0 :(得分:3)

如果您喜欢开源的话,可以使用开箱即用的JavaScriptSerializerjson.net

基于Darin Dimitrov's sample,以下是您对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; }
   }
}

答案 1 :(得分:1)

以下是一个例子:

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]);
    }
}

答案 2 :(得分:0)

目标类

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

<强>反序列化

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

答案 3 :(得分:-2)

将你的字符串包装在eval函数中:

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