2014-02-19 3 views
2

Я хочу десериализовать эту схему с помощью JSON.Net.Deserialize JSON Schema с JSON.Net

{ 
    "color" : { 
    "type" : "String", 
    "description" : "What color do you want your taco", 
    "required" : false, 
    "default" : "Green", 
    "options" : [ "Green", "Blue", "Red"] 
    }, 
    "include_beans" : { 
    "type" : "Boolean", 
    "description" : "Do you want beans on your taco", 
    "required" : false, 
    "default" : false 
    }, 
    "pounds" : { 
    "type" : "Double", 
    "description" : "How many pounds of meat do you want?", 
    "required" : false, 
    "default" : 0.1 
    }, 
    "count" : { 
    "type" : "Integer", 
    "description" : "How many tacos would you like?", 
    "required" : false, 
    "default" : 0.0 
    } 
} 

Обратите внимание, что каждое свойство имеет одинаковую структуру. То, что я хочу, чтобы в конечном итоге является Dictionary<string, TacoProperty>, где TacoProperty определяется как:

public class TacoProperty 
{ 
    public string type { get; set; } 
    public string description { get; set; } 
    public bool required { get; set; } 
    [JsonProperty(PropertyName = "default")] 
    public string defaultValue { get; set; } 
    public List<string> options { get; set; } 
} 

Ключи в словаре должен быть «цвет», «include_beans» и т.д., и все TacoProperty s должны быть значения ,

+0

Так что же вы пытаетесь (зная тип цели), и что не работает, когда вы пробовали? Json.NET полностью способен десериализовать непосредственно на «Словарь ». – user2864740

+0

Эй, почему нисходящий? – NielW

+0

Возможно, из-за того, что проблемы не представлены, доступна только задача и вся информация, чтобы попробовать что-то (что либо сработает, либо приведет к ошибке/проблеме). – user2864740

ответ

6

Json.NET может десериализации данные непосредственно:

var tacoProperties = 
     JsonConvert.DeserializeObject<IDictionary<string, TacoProperty>>(json); 
+0

Спасибо. Это намного шире, чем мой путь. Я понятия не имел, что он автоматически использует Путь в качестве ключа. – NielW

+0

Это то, о чем СОСТОЯТСЯ, но я забираюсь вниз, пытаясь узнать лучший способ сделать что-то. Еще раз спасибо. – NielW

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