gpt4 book ai didi

c# - 将根 JSON 数组映射到类型的属性。 。网

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:51 25 4
gpt4 key购买 nike

我有一个包含两个对象的 JSON 数组。例如:[{},{}]

我想将根数组映射到一个属性:

[JsonArray("Results")]
internal class CollectionResponse : BaseResponse
{
public ItemsResponse[] Results { get; set; }
}

不幸的是,我无法将集合传递给序列化程序,因为它是一个接收 BaseResponse 类型的自定义程序集。

可能有一个属性可以将根数组映射到子属性?

最佳答案

使用 Newtonsoft.Json 库非常简单,因为 ItemsResponse 数组的属性名称与 Json 模型相同,您甚至不需要使用属性,因为模型绑定(bind)足够智能,可以使用变量名称.

    private static void StackOverflow()
{
var jsonString = "{\"Results\":[{\"Item\":\"ItemName1\"},{\"Item\":\"ItemName2\"}]}";

var collectionResponse = JsonConvert.DeserializeObject<CollectionResponse>(jsonString);
}

internal class CollectionResponse
{
public ItemsResponse[] Results { get; set; }
}

internal class ItemsResponse
{
public string Item { get; set; }
}

编辑:

如果你希望将json中的数组作为根,那么上面的方法还是可以的,但是你需要使用反序列化类型为ItemResponse[]。

    private static void StackOverflow()
{
var jsonString = "[{\"Item\":\"ItemName1\"},{\"Item\":\"ItemName2\"}]";

var collectionResponse = new CollectionResponse()
{
Results = JsonConvert.DeserializeObject<ItemsResponse[]>(jsonString)
};
}

[JsonArray]
internal class CollectionResponse
{
public ItemsResponse[] Results { get; set; }
}

internal class ItemsResponse
{
public string Item { get; set; }
}

关于c# - 将根 JSON 数组映射到类型的属性。 。网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48582903/

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