有没有对JSON比较熟悉的 先碰到如下问题
C# JSON 序列化 反序列化 问题
如下JSON数据怎么反序列化
只要是这种数组类型的数据执行就会报错
用的是Newtonsoft.Json库
有两种场景:
一、如果你的json字符串的最外层只是一个数组,则:
则使用List<User>
,如下:
二、如果json字符串最外层还有属性名,如
则使用Root
对象,如下:
https://www.cnblogs.com/yanweidie/p/4605212.html
你的 Root 类 怎么定义的?json 数组里面一个个json对象,也需要一个pojo类来承载
json 数组里面,一个 object 对象就对应一个 pojo 实体类,你在反序列化时候,pojo 类里面的字段要和 json 数组里面每个对象属性名称相同。
选择目标程序包
安装之后
将引用添加到程序里面
在代码里面引用
using Newtonsoft.Json;
看了你的数据格式,把一个{}放进[]里,肯定解析失败了。
你的写法:
Root rt = TsonConvert.DeserializeObject<Root>(getJson);
改成这种试试:小编不懂java,😂😂😂😂,你试着改改
List<Root> rt =JsonConvert.DeserializeObject<List<Root>>(getJson);
回答引用 chatgpt
在 C# 中,你可以使用 Newtonsoft.Json 库将 JSON 字符串转换为 List 对象。下面是一个示例代码:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace JsonToList
{
class Program
{
static void Main(string[] args)
{
string json = "[{\"name\":\"John\",\"age\":30,\"city\":\"New York\"},{\"name\":\"Jane\",\"age\":25,\"city\":\"London\"}]";
List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(json);
foreach (Person person in persons)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, City: {person.City}");
}
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
}
在上述示例中,我们首先引入 Newtonsoft.Json 命名空间,并定义了一个 Person 类作为 JSON 对象的映射。然后,我们使用 JsonConvert.DeserializeObject 方法将 JSON 字符串转换为 List 对象,将 JSON 字符串中的每个对象映射为 Person 对象。最后,我们遍历 List 对象,输出每个 Person 对象的属性值。
运行以上代码,输出将是解析后的 Person 对象的属性值。
请注意,你需要先在项目中添加对 Newtonsoft.Json 的引用,可以通过 NuGet 包管理器或者手动添加引用来获得 Newtonsoft.Json 库。
需要确保 JSON 字符串的格式与 Person 类的属性对应,这样才能正确地进行反序列化操作。
如果 JSON 字符串是嵌套的或者包含复杂的结构,你可以创建相应的类来映射 JSON 结构,并使用 Newtonsoft.Json 库的反序列化方法将 JSON 字符串转换为对应的对象或集合。
推荐个工具 https://json2csharp.com/