gpt4 book ai didi

c# - 如何反序列化包含 JSON.NET 中的字符串和对象的数组

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:33 26 4
gpt4 key购买 nike

我正在尝试将特殊数组反序列化为 Visual Basic 中的对象。下面的json数据是我用的webservice下发的;我感兴趣的部分是“数据”属性;基本上它是一个字符串数组的数组,每个数组代表一个对象:

{"timestamp":1385984969075,
"data":
[
[1590,null,null,null,0],
[1020,"data a",null,null,0],
[1025,"data b",null,null,0],
...
[2756,"data c",null,
[
{"id":2,"name":"Tom","mail":"tom@test.te","f_id":6,"md":1},
{"id":3,"name":"Carl","mail":"carl@test.te","f_id":6,"md":1}
]
,3],
[1277,"data d",null,null,0],
...
]}

在此示例中,每个数组的数据项 4 可能为空或包含一个对象数组。

我想将数组反序列化为一个对象列表,但我无法让它工作。我搜索了很多类似的帖子,但到目前为止我找不到任何有用的东西。

(我在 Visual Basic.net 中编写,但欢迎使用 C# 示例。)

有人可以帮忙吗?

最佳答案

更新:

这是另一个使用对象数组映射您拥有的数组的示例。然后我提取了数组中的每条数据。

再次希望这对您有所帮助:

var list = new People
{
PersonList = new object[]
{
new object[]
{
"Test1", "Test2", "Test3", null, new object[]{new Person{Name="John", Age=21}}, 1
},
new object[]
{
"Test4", "Test5", "Test6", null, null, 2
},
new object[]
{
"Test17", "Test8", "Test9", null, new object[]{new Person{Name="Sara", Age=31}}, 3
},
new object[]
{
"Test10", "Test11", "Test12", null, null, 4
},
new object[]
{
"Test13", "Test14", "Test15", null, new object[]{new Person{Name="John", Age=31}}, 5
}
}
};

string output = JsonConvert.SerializeObject(list);

var objList = JsonConvert.DeserializeObject<People>(output);

objectList = objList.PersonList;

foreach(JArray objectItem in objectList)
{

var stringOne = (string)objectItem[0];
var stringTwo = (string)objectItem[1];
var stringthree = (string)objectItem[2];
var nullObj = objectItem[3];

foreach(var individual in objectItem[4])
{
JObject obj = (JObject)JToken.FromObject(individual);
var person = obj.ToObject<Person>();

string name = person.Name;
int age = person.Age;
}
var num = (int)objectItem[5];
}

JSON:

{
"PersonList": [
[
"Test1",
"Test2",
"Test3",
null,
[
{
"Name": "John",
"Age": 21
},
{
"Name": "Pete",
"Age": 44
}
],
1
],
[
"Test4",
"Test5",
"Test6",
null,
null,
2
],
[
"Test17",
"Test8",
"Test9",
null,
[
{
"Name": "Sara",
"Age": 31
}
],
3
],
[
"Test10",
"Test11",
"Test12",
null,
null,
4
],
[
"Test13",
"Test14",
"Test15",
null,
[
{
"Name": "John",
"Age": 31
}
],
5
]
]

人类:

 public class Person
{
public string Name { set; get; }

public int Age { set; get; }
}

PeopleList 类:

 public class People
{
public object[] PersonList { set; get; }
}

关于c# - 如何反序列化包含 JSON.NET 中的字符串和对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com