2016-11-21 96 views
2

尝试向JArray中添加类型对象时出现以下错误。无法确定类型为“Class”的JSON对象类型

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),待识别由系统作为JSON对象?

您的回答非常感谢。

谢谢。

+0

为什么'_JArray'是动态的?你所有似乎分配给它的是'JArray',那么为什么不把它声明为'JArray'? –

+0

嗨@DStanley,在我将'_JArray'从动态更改为'JArray'后,错误仍然存​​在 – Reinhardt

回答

6

为了一个任意的非原始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例外。样品fiddle

+0

谢谢@dbc。它现在工作正常,并且还要感谢循环迭代的修正。 :d – Reinhardt

相关问题