Преобразовать JSON в массив C #? - PullRequest
30 голосов
/ 06 марта 2012

Кто-нибудь знает, как преобразовать строку, содержащую json, в массив C #. У меня есть это, который читает текст / JSON из веб-браузера и сохраняет его в строку.

string docText = webBrowser1.Document.Body.InnerText;

Просто нужно как-то изменить эту строку json в массив. Я смотрел на Json.NET, но я не уверен, что это то, что мне нужно, так как я не хочу превращать массив в json; но наоборот. Спасибо за помощь!

Ответы [ 3 ]

54 голосов
/ 06 марта 2012

просто возьмите строку и используйте JavaScriptSerializer для десериализации ее в собственный объект. Например, имея этот JSON:

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

Вам необходимо создать класс C # с именем, например, Person, определяемый следующим образом:

public class Person
{
 public int Age {get;set;}
 public string Name {get;set;}
}

Теперь вы можете десериализовать строку JSON в массив Person, выполнив:

JavaScriptSerializer js = new JavaScriptSerializer();
Person [] persons =  js.Deserialize<Person[]>(json);

Вот ссылка на документацию JavaScriptSerializer .

Примечание: мой код выше не был проверен, но это идея Протестировал его. Если вы не делаете что-то «экзотическое», вы можете использовать JavascriptSerializer.

6 голосов
/ 06 марта 2012

Да, Json.Net - это то, что вам нужно.В основном вы хотите десериализовать строку Json в массив objects.

См. их примеры :

string myJsonString = @"{
  "Name": "Apple",
  "Expiry": "\/Date(1230375600000+1300)\/",
  "Price": 3.99,
  "Sizes": [
    "Small",
    "Medium",
    "Large"
  ]
}";

// Deserializes the string into a Product object
Product myProduct = JsonConvert.DeserializeObject<Product>(myJsonString);
4 голосов
/ 30 июня 2016
using Newtonsoft.Json;

Установите этот класс в консоль пакета Этот класс отлично работает во всех версиях .NET, например, в моем проекте: у меня DNX 4.5.1 и DNX CORE 5.0, и все работает.

Во-первых, перед десериализацией JSON вам нужно объявить класс для нормального чтения и хранить где-нибудь данные Это мой класс:

public class ToDoItem
{
    public string text { get; set; }
    public string complete { get; set; }
    public string delete { get; set; }
    public string username { get; set; }
    public string user_password { get; set; }
    public string eventID { get; set; }
}

В разделе HttpContent, где вы запрашиваете данные с помощью запроса GET например:

HttpContent content = response.Content;
string mycontent = await content.ReadAsStringAsync();
//deserialization in items
ToDoItem[] items = JsonConvert.DeserializeObject<ToDoItem[]>(mycontent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...