Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将json转换为C#数组?_C#_Arrays_Winforms_Json - Fatal编程技术网

将json转换为C#数组?

将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

有人知道如何将包含json的字符串转换为C#数组吗。我有一个从webBrowser读取文本/json并将其存储到字符串中的程序

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; }
        }
    }
}