将json转换为C#数组?
有人知道如何将包含json的字符串转换为C#数组吗。我有一个从webBrowser读取文本/json并将其存储到字符串中的程序将json转换为C#数组?,c#,arrays,winforms,json,C#,Arrays,Winforms,Json,有人知道如何将包含json的字符串转换为C#数组吗。我有一个从webBrowser读取文本/json并将其存储到字符串中的程序 string docText = webBrowser1.Document.Body.InnerText; 只需要以某种方式将json字符串更改为数组。我一直在关注Json.NET,但我不确定这是否是我需要的,因为我不想将数组更改为Json;但反过来说。谢谢你的帮助 是的,Json.Net是您所需要的。基本上,您希望将Json字符串反序列化为对象数组 见: strin
string docText = webBrowser1.Document.Body.InnerText;
只需要以某种方式将json字符串更改为数组。我一直在关注Json.NET,但我不确定这是否是我需要的,因为我不想将数组更改为Json;但反过来说。谢谢你的帮助 是的,Json.Net是您所需要的。基本上,您希望将Json字符串反序列化为
对象数组
见:
string myJsonString=@”{
“名称”:“苹果”,
“到期日”:“\/日期(1230375600000+1300)\/”,
“价格”:3.99,
“尺寸”:[
“小”,
“中等”,
“大”
]
}";
//将字符串反序列化为产品对象
Product myProduct=JsonConvert.DeserializeObject(myJsonString);
只需获取字符串并使用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 js=新的JavaScriptSerializer();
Person[]persons=js.反序列化(json);
这是一个例子
注意:我上面的代码没有经过测试,但这就是测试它的想法。除非您正在做一些“异国情调”的事情,否则您应该可以使用JavascriptSerializer
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);
HttpContent content=response.content;
字符串mycontent=wait content.ReadAsStringAsync();
//项目中的反序列化
ToDoItem[]items=JsonConvert.DeserializeObject(mycontent);
旧问题,但如果使用.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; }
}
}
}
使用系统;
使用System.Collections.Generic;
名称空间控制台
{
班级计划
{
静态void Main(字符串[]参数)
{
var json=“[{\'Name\':\'John Smith\',\'Age\':35},{\'Name\':\'Pablo Perez\',\'Age\':34}]”;
//使用内置的Json反序列化程序将字符串转换为Person对象列表
var people=System.Text.Json.JsonSerializer.Deserialize(Json);
foreach(人与人之间的变量)
{
Console.WriteLine(person.Name+“是”+person.Age+“岁”);
}
}
公共阶层人士
{
公共整数{get;set;}
公共字符串名称{get;set;}
}
}
}
字符串不必是数组,也可以是散列。还有一系列什么?你的字符串看起来像什么,你希望结果是什么?你想达到什么目的。可能是重复的谢谢!您知道JavascriptSerializer使用什么名称空间吗?获取“找不到”错误。是的,它在我链接的文档中。它位于System.Web.Script.Serialization中。您需要添加对System.Web.Extensions程序集的引用。啊,谢谢。让它工作起来。但我认为这是“JavaScriptSerializer”而不是“JavaScriptSerializer”。这就是为什么我会犯那个错误。您可能需要编辑该文件。:)@乔伊·莫拉尼对此表示抱歉。我会编辑它。当然,当我在本地测试时,VS对我进行了更正,但我没有意识到:感谢您提供一个非常简单的解决方案,以解决本应是且最终证明是sipmle问题。其他的解决方案似乎烧掉了几十行代码,我无法让它们工作。
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; }
}
}
}