Json десериализация в класс - PullRequest
1 голос
/ 22 февраля 2012

У меня динамический результат json, и я хочу создать объект для этой строки json.После этого я заполню этот объект десериализованным объектом.Вот строка json:

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

Как выглядит объект?Или как я могу десериализовать эту строку в класс.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 22 февраля 2012

Вы можете использовать JavaScriptSerializer , который доступен из коробки, или json.net , если вы предпочитаете что-то с открытым исходным кодом.

На основании выборки Дарина Димитрова , вот как бы вы поступили с 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 голос
/ 22 февраля 2012

Вот пример:

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]);
    }
}
0 голосов
/ 22 февраля 2012

Целевой класс

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

Десериализация

var ser = new JavaScriptSerializer();
var obj = ser.Deserialize<Target>(json);
0 голосов
/ 22 февраля 2012

Оберните вашу строку в функцию eval:

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