尝试将类型类的对象添加到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;
}
Run Code Online (Sandbox Code Playgroud)
我在运行程序时将其称为以下内容:
_JArray = NArray(repository);
Console.WriteLine(JsonConvert.SerializeObject(_JArray));
Run Code Online (Sandbox Code Playgroud)
如何在_JArray(JArray)中转换AmountModel(类),以便系统将其识别为JSON对象?
你的回答非常感谢.
谢谢.
dbc*_*dbc 24
为了向a添加任意非原始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;
Run Code Online (Sandbox Code Playgroud)
(另请注意,我更正了for循环中的结束条件.这是i <= amounts.Length导致IndexOutOfRangeException异常的原因.)
工作样本.Net小提琴#1 在这里.
或者,您可以使用LINQ简化代码,并将JArray.FromObject()字符串数组投影到AmountModel可枚举项,然后将整个序列序列化为JArray一次调用:
var _JArray = JArray.FromObject(amounts.Select(a => new AmountModel { Amounts = a }));
Run Code Online (Sandbox Code Playgroud)
在这里示例小提琴#2 .