#c# #windows-phone-7 #json.net
#c# #windows-phone-7 #json.net
Вопрос:
Строка, которую я хочу разобрать:
[
{
id: "new01"
name: "abc news"
icon: ""
channels: [
{
id: 1001
name: "News"
url: "http://example.com/index.rss"
sortKey: "A"
sourceId: "1"
},
{
id: 1002
name: "abc"
url: "http://example.com/android.rss"
sortKey: "A"
sourceId: "2"
} ]
},
{
id: "new02"
name: "abc news2"
icon: ""
channels: [
{
id: 1001
name: "News"
url: "http://example.com/index.rss"
sortKey: "A"
sourceId: "1"
},
{
id: 1002
name: "abc"
url: "http://example.com/android.rss"
sortKey: "A"
sourceId: "2"
} ]
}
]
Комментарии:
1. Я пытался прочитать весь документ, но безуспешно: D
2. В созданный вами объект или в JSONObject?
Ответ №1:
Ваш JSON на самом деле не JSON — вам нужны запятые после полей:
[
{
id: "new01",
name: "abc news",
icon: "",
channels: [
{
id: 1001,
....
Предполагая, что вы это сделали и что вы используетеJSON.NET, тогда вам понадобятся классы для представления каждого из элементов — основных элементов в основном массиве и дочерних элементов «Канала».
Что-то вроде:
public class Channel
{
public int Id { get; set; }
public string Name { get; set; }
public string SortKey { get; set; }
public string SourceId { get; set; }
}
public class MainItem
{
public string Id { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public List<Channel> Channels { get; set; }
}
Поскольку существует несоответствие между соглашениями об именовании элементов C # и именами JSON, вам нужно будет украсить каждый элемент сопоставлением, чтобы сообщить анализатору JSON, как называются поля json:
public class Channel
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("sortkey")]
public string SortKey { get; set; }
[JsonProperty("sourceid")]
public string SourceId { get; set; }
}
public class MainItem
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("icon")]
public string Icon { get; set; }
[JsonProperty("channels")]
public List<Channel> Channels { get; set; }
}
После того, как вы сделали это, вы можете разобрать строку, содержащую ваш JSON, следующим образом:
var result = JsonConvert.DeserializeObject<List<MainItem>>(inputString);
Комментарии:
1. Спасибо, я попробую ваш способ и сообщу результат. Спасибо Дамиану.
Ответ №2:
да, это JsonConvert.DeserializeObject (строка json)
попробуйте использовать JsonConvert.SerializeObject (объект) для создания JSON.