无法确定类型“Class”的JSON对象类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法确定类型“Class”的JSON对象类型相关的知识,希望对你有一定的参考价值。
尝试将类型类的对象添加到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(类),以便系统将其识别为JSON对象?
你的回答非常感谢。
谢谢。
为了将任意非原始POCO添加到JArray
,您必须使用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小提琴#1 here。
或者,您可以使用LINQ和JArray.FromObject()
简化代码,方法是将字符串数组投影到可枚举的AmountModel
,然后在一次调用中将整个序列序列化为JArray
:
var _JArray = JArray.FromObject(amounts.Select(a => new AmountModel { Amounts = a }));
样品小提琴#2 here。
以上是关于无法确定类型“Class”的JSON对象类型的主要内容,如果未能解决你的问题,请参考以下文章
httpClient.GetAsync电话扔System.ArgumentException:无法确定JSON对象类型
numba - TypingError:无法确定 <class 'builtin_function_or_method'> 的 Numba 类型
Effective Objective-C 2.0 — 第14条:理解“类对象“的用意
MongoDB 展开错误:无法编码类型的对象:<class 'set'>
Jackson ObjectMapper 无法反序列化 POJO,抛出异常:没有找到适合类型 [...] 的构造函数:无法从 JSON 对象实例化