2013-08-09 3 views
-2

У меня есть строка JSON, как:Создание класса для де/сериализации

var json = "{\"Attributes\": {\"name\":\"S1\", \"quantity\":\"100\"}}"; 

Я хочу создать класс для того же самого; как вы подходите при создании класса для строки JSON в C#?

+0

http://json2csharp.com/ – asawyer

+0

Какую версию Visual Studio вы используете? –

+1

Ваш Json недействителен –

ответ

4

Если вы используете Visual Studio 2012, зайдите в меню до EDIT -> Paste Special -> Paste JSON As CLasses.

Вы действительный JSON, вероятно выглядеть следующим образом (вы должны удалить \ перед копированием его в буфер обмена):

{"Attributes": {"name":"S1", "quantity":"100"}} 

Образованные классы:

public class Rootobject 
{ 
    public Attributes Attributes { get; set; } 
} 

public class Attributes 
{ 
    public string name { get; set; } 
    public string quantity { get; set; } 
} 

Пример использования (обратите внимание, что \ все еще здесь, с тем, чтобы иметь действующий синтаксис кода):

var json = "{\"Attributes\": {\"name\":\"S1\", \"quantity\":\"100\"}}"; 
var json_serializer = new JavaScriptSerializer(); 
Rootobject dc = json_serializer.Deserialize<Rootobject>(json); 
+3

+1, даже не понял, что у VS был этот встроенный из коробки. - И xml, oh snap! –

+0

@alex Я делаю следующее JavaScriptSerializer json_serializer = новый JavaScriptSerializer(); RootObject dc = json_serializer.Deserialize (str); Однако dc все еще показывает нуль –

+0

Удивительно! Вещи вещей, которые вы изучаете eh ... –

0

Вы не поняли вопрос, но я предполагаю, что вы имеете в виду разбор JSON на объекты C#? Использование Json.NET и что-то, как это может сделать:

public class Attributes 
{ 
    [JsonProperty("name")] 
    public String Name { get; set; } 

    [JsonProperty("quantity")] 
    public Int32 Quantity { get; set; } 
} 
public class MyObject 
{ 
    [JsonProperty("Attributes")] 
    public Attributes Attributes { get; set; } 
} 

var myObj = JsonConvert.DeserializeObject<MyObject>(json); 

Или вы можете пойти в более широком смысле, и пусть JSON.NET сделать это для вас:

var obj = JsonConvert.DeserializeObject<dynamic>(
    "{ \"Attributes\": {\"name\":\"S1\", \"quantity\":\"100\"}}" 
); 
Console.WriteLine(obj.Attributes["name"])  // S1 
Console.WriteLine(obj.Attributes["quantity"]) // 100 
+0

всякий раз, когда я пытаюсь использовать JSON.NET в своем веб-сайте (IIS), мой клиент всегда получает неверный запрос –

0

взглянуть на пространство имен System.Runtime.Serialization, вы можете найти полезные классы для (де) сериализации JSON там

также вы можете прочитать этот же вопрос (поиск, прежде чем отправлять не очень больно):

How do I represent this complex json document as a C# object?

Смежные вопросы