Преобразовать json в массив С#?
Кто-нибудь знает, как преобразовать строку, содержащую json в массив С#. У меня есть это, которое читает текст /json из webBrowser и сохраняет его в строке.
string docText = webBrowser1.Document.Body.InnerText;
Просто нужно как-то изменить эту строку json в массив. Я смотрел Json.NET, но я не уверен, что это мне нужно, поскольку я не хочу менять массив на json; но наоборот. Спасибо за помощь!
Ответы
Ответ 1
просто возьмите строку и используйте JavaScriptSerializer для десериализации ее в собственный объект. Например, имея этот json:
string json = "[{Name:'John Simith',Age:35},{Name:'Pablo Perez',Age:34}]";
Вам нужно создать класс С#, называемый, например, 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.
Ответ 2
Да, 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);
Ответ 3
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; }
// public string name { get; set; }
}
В разделе HttpContent, где вы запрашиваете данные по запросу GET
например:
HttpContent content = response.Content;
string mycontent = await content.ReadAsStringAsync();
//deserialization in items
ToDoItem[] items = JsonConvert.DeserializeObject<ToDoItem[]>(mycontent);