2015-04-13 3 views
0

Как я разобрать этот JSon:Анализировать Json в Umbraco бритвы

[{ 
"value": "", 
"date": { 
    "value": "17/04/2015" 
}, 
"hour": { 
    "value": "21:00" 
}, 
"venue": { 
    "value": "some stadium." 
}}, { 
"value": "", 
"date": { 
    "value": "18/04/2015" 
}, 
"hour": { 
    "value": "20:30" 
}, 
"venue": { 
    "value": "some stadium" 
}}] 

Я попробовал этот код:

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 

foreach (var item in serializer.Serialize(item.dates)) 
{ 
    @* item == "34 ''" *@ 
} 

, но его возвращение строки "34 ''", а не то, что я хочу.

Может кто-нибудь помочь мне понять, что я пропустил? Спасибо

ответ

4

Вы должны использовать DeserializeObject -Метод вместо Serialize -Метод.

Он возвращает объект [], который содержит Dictionary<string, object> -элементов (данные)

Чтобы получить значения из массива, отлитый текущую позицию в Dictonary<string, object> (представляет собой объект JSON) и получить доступ к значению с индексатор.

Пример:

var v = new JavaScriptSerializer(); 
     var arr = (object[]) v.DeserializeObject(File.ReadAllText("json.txt")); 
for (var i = 0; i < arr.Length; i++) 
{ 
    Console.WriteLine(((Dictionary<string, object>)arr[i])["value"]); 
} 

Пример 2 - доступ к значению внутри даты объекта:

var v = new JavaScriptSerializer(); 
var arr = (object[])v.DeserializeObject(File.ReadAllText("json.txt")); 
for (var i = 0; i < arr.Length; i++) 
{ 
    // The current object 
    var c = (Dictionary<string, object>) arr[i]; 
    // Getting the date object 
    var date = (Dictionary<string, object>) c["date"]; 
    // Printing the value inside of the date object 
    Console.WriteLine(date["value"]); 

    // OUTPUT: 
    // 17/04/2015 
    // 18/04/2015 
} 
+0

прежде всего большое спасибо за быстрый ответ, какого рода «целевого типа» я должен пишите, если у меня нет объекта этого объекта? – Idoshhh

+0

Добавлен пример моего ответа, надеюсь, что это на ваш вопрос –

+0

не решило проблему. :( – Idoshhh

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