尝试将类类型的对象添加到 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
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异常。)
for
i <= amounts.Length
IndexOutOfRangeException
工作样本.Net 在这里#1 。
另外,您可以使用LINQ简化代码,方法JArray.FromObject()是将字符串数组投影为AmountModel可枚举,然后将整个序列序列化为JArray一个调用:
JArray.FromObject()
AmountModel
var _JArray = JArray.FromObject(amounts.Select(a => new AmountModel { Amounts = a }));
在这里样本小提琴2 。