2016-09-18 2 views
0

Мой тест JSON, как показано ниже ..Json строка объекта массив C#

string json = "[{Name:'John Simith',Age:35},{Name:'Pablo Perez',Age:34}]"; 

JSON может иметь какие-либо ключевые ценности, и поэтому я не имею класс десериализации его .. Я могу десериализации как IEnumerable, как показано ниже

IEnumerable<dynamic> data = JsonConvert.DeserializeObject<IEnumerable<dynamic>>(json); 

Мне нужно, чтобы преобразовать его в объект массивов 2D: объект [,], как показано ниже ..

[ 
['John Simith',35],['Pablo Perez',34] 
] 

Любая помощь искренне признателен. Благодаря

+0

http://stackoverflow.com/questions/1207731/how-can-i-deserialize-json-to-a-simple-dictionarystring- строка-в-Asp-сети? – CodeCaster

ответ

0

Вы можете изменить его с dynamic на номер IDictionary<string, object>, чтобы иметь возможность перечислять неизвестные ключи. Тогда выражение LINQ может преобразовать его в массив, например:

var json = "[{Name:'John Simith',Age:35},{Name:'Pablo Perez',Age:34}]"; 
var data = JsonConvert.DeserializeObject<IEnumerable<IDictionary<string, object>>>(json); 

var array = data.Select(d => d.Values.ToArray()).ToArray(); 
+0

привет. но как сохранить имена свойств? если я использую .toDictionary(), то как? –

0

Если вы не имеете класс C# для десериализации его, то лучше всего сделать, это использовать объекты динамического LINQ, что JSON.NET предусматривает, что означает JObject, JArray и так далее. Это позволяет запрашивать структуру динамически считывать типы значений и так далее, без того, чтобы бороться с системой типов С #:

http://www.newtonsoft.com/json/help/html/ParsingLINQtoJSON.htm

Было бы гораздо легче перемещаться по дереву JSON и конвертировать в object[,] из этих объектов ,

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