gpt4 book ai didi

c# - 无法确定类型 "Class"的 JSON 对象类型

转载 作者:可可西里 更新时间:2023-11-01 08:38:04 27 4
gpt4 key购买 nike

我在尝试将类类型的对象添加到 JArray 时遇到以下错误。

Could not determine JSON object type for type "Class"

这是我的代码:

private dynamic _JArray = null

private JArray NArray(Repository repository)
{
_JArray = new JArray();

string[] amounts = repository.Amounts.Split('|');

for (int i = 0; i <= amounts.Length; i++)
{
_JArray.Add(new AmountModel
{
Amounts = amounts[i],
});
}

return _JArray;
}

public class AmountModel
{
public string Amounts;
}

我是这样调用它的:

_JArray = NArray(repository);

Console.WriteLine(JsonConvert.SerializeObject(_JArray));

如何将 _JArray (JArray) 中的 AmountModel (class) 转换为系统识别为 JSON 对象?

非常感谢您的回答。

谢谢。

最佳答案

为了将任意非原始 POCO 添加到 JArray (或 JObject ),您必须使用 JToken.FromObject() 的重载之一显式序列化它:

_JArray = new JArray();

string[] amounts = repository.Amounts.Split('|');

for (int i = 0; i < amounts.Length; i++)
{
_JArray.Add(JToken.FromObject(
new AmountModel
{
Amounts = amounts[i],
}));
}

return _JArray;

(另请注意,我更正了您的 for 循环中的结束条件。它是 i <= amounts.Length ,这导致了 IndexOutOfRangeException 异常。)

工作示例 .Net fiddle #1 here .

或者,您可以使用 LINQ 和 JArray.FromObject() 来简化您的代码通过将字符串数组投影到 AmountModel可枚举然后将整个序列序列化为 JArray在一个电话中:

var _JArray = JArray.FromObject(amounts.Select(a => new AmountModel { Amounts = a }));

示例 fiddle #2 here .

关于c# - 无法确定类型 "Class"的 JSON 对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40722227/

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