2016-10-21 8 views
-2
{ 
    "1": { 
    "id": 1, 
    "name": "Name(1)", 
    "var": 24, 
    "type": "TEST" 
    }, 
    "2": { 
    "id": 2, 
    "name": "Name(2)", 
    "var": 24, 
    "type": "TEST" 
    }, 
... 

Использование TIntObjectMap в java и загрузка их как это отлично работает. Не удалось найти способ сделать это в C#.Как десериализовать этот JSON в C#?

GSON.fromJson(FileUtils.readFileToString(new File("file.json")),new TypeToken<Map<Integer, Definition>>() { }.getType())); 

ответ

1

Использование Json.Net

var myobjs = JsonConvert.DeserializeObject<Dictionary<string, MyObject>>(json); 

public class MyObject 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public int var { get; set; } 
    public string type { get; set; } 
} 

Вы можете даже использовать dynamic без использования класса как MyObject

dynamic dynObj = JsonConvert.DeserializeObject(json); 
Console.WriteLine(dynObj["1"].name); 

Это JSON я использовал (как вы писали)

{ 
    "1": { 
    "id": 1, 
    "name": "Name(1)", 
    "var": 24, 
    "type": "TEST" 
    }, 
    "2": { 
    "id": 2, 
    "name": "Name(2)", 
    "var": 24, 
    "type": "TEST" 
    } 
} 
+0

Ошибка преобразования значения 1 в тип – Indrz

+0

@Indrz Учитывая ваш json в вопросе, я протестировал свой код перед публикацией, и он работает ... Поэтому, пожалуйста, напишите что-нибудь лучше, чем «Ошибка преобразования значения 1 в тип» –

+0

@ Jim Я проверил снова сейчас , Это правильно и работает ... –