有谁知道如何将包含json的字符串转换为C#数组。我有这个从webBrowser读取text / json并将其存储到字符串中。
string docText = webBrowser1.Document.Body.InnerText;
只需要以某种方式将json字符串更改为数组。一直在看Json.NET,但我不确定这是否是我需要的,因为我不想将数组更改为json;但反过来说。谢谢你的帮助!
答案 0 :(得分:52)
只需获取字符串并使用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);
这是link to JavaScriptSerializer documentation。
注意:上面的代码没有经过测试,但这就是想法经过测试。除非你正在做一些“异国情调”的事情,否则你应该没问题使用JavascriptSerializer。
答案 1 :(得分:6)
是的,Json.Net就是您所需要的。您基本上希望将Json字符串反序列化为objects
。
请参阅their examples:
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);
答案 2 :(得分:4)
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);
答案 3 :(得分:2)
旧问题,但是如果使用.NET Core 3.0或更高版本,则值得添加答案。 JSON序列化/反序列化内置在框架(System.Text.Json)中,因此您不再需要使用第三方库。这是一个基于@Icarus
给出的最佳答案的示例using System;
using System.Collections.Generic;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
var json = "[{\"Name\":\"John Smith\", \"Age\":35}, {\"Name\":\"Pablo Perez\", \"Age\":34}]";
// use the built in Json deserializer to convert the string to a list of Person objects
var people = System.Text.Json.JsonSerializer.Deserialize<List<Person>>(json);
foreach (var person in people)
{
Console.WriteLine(person.Name + " is " + person.Age + " years old.");
}
}
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
}
}
}