无法确定类型“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 ,这导致了IndexOutOfRangeExceptionexception。)

工作样本.Net小提琴#1 在这里 。

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

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

在这里示例小提琴#2。