2016-09-27 46 views
0

我想deserialise一些JSON看起来像这样:JSON不会完全deserialise到C#类

{ 
    "Results":{ 
     "Prediction":{ 
     "type":"table", 
     "value":{ 
      "ColumnNames":[ 
       "HT", 
       "AT", 
       "X", 
       "Y", 
       "Z" 
      ], 
      "ColumnTypes":[ 
       "String", 
       "String", 
       "Double", 
       "Double", 
       "Double" 
      ], 
      "Values":[ 
       [ 
        "Mum", 
        "Dad", 
        "0.172627246490883", 
        "0.171741768332677", 
        "0.65563098517644" 
       ], 
       [ 
        "Father", 
        "Mother", 
        "0.391368227731864", 
        "0.21270005247278", 
        "0.395931719795356" 
       ] 
      ] 
     ] 
     } 
    } 
    } 
    } 

的C#类看起来是这样的:

public class RootObject 
{ 
    public Results Results { get; set; } 
} 

public class Results 
{ 
    public Prediction Prediction { get; set; } 
} 

public class Prediction 
{ 
    public string type { get; set; } 
    public Value value { get; set; } 
} 

public class Value 
{ 
    string[] ColumnNames { get; set; } 
    string[] ColumnTypes { get; set; } 
    string[][] Values { get; set; } 
} 

它deserialises达最终财产“价值”,这是不匹配的。如果我打开错误处理,看看为什么我收到以下错误:

Additional information: Could not find member 'ColumnNames' on object of type 'Value'. Path 'Results.Prediction.value.ColumnNames', line 1, position 64. 

我有再现了整个问题的一个简单的C#示例:

var derek = @"{""Results"":{""Prediction"":{""type"":""table"",""value"":{""ColumnNames"":[""HT"",""AT"",""X"",""Y"",""Z""],""ColumnTypes"":[""String"",""String"",""Double"",""Double"",""Double""],""Values"":[[""Mum"",""Dad"",""0.172627246490883"",""0.171741768332677"",""0.65563098517644""],[""Father"",""Mother"",""0.391368227731864"",""0.21270005247278"",""0.395931719795356""]]]}}}}"; 

var returnedObj = JsonConvert.DeserializeObject <RootObject> (derek, settings); 

我敢肯定我的类别匹配JSON。为什么不反序列化?

+5

你忘了'public' ... –

+0

参见[Json.net无法加载某些属性属于一个类对象?](http://stackoverflow.com/q/33704252/10263) –

+0

@LucasTrzesniewski谢谢,难免有蠢尴尬的错误! –

回答

0

在C#中的属性默认为私有的,他们需要的是公众通过Newtonsoft/Json的拾起

public class Value 
{ 
    public string[] ColumnNames { get; set; } 
    public string[] ColumnTypes { get; set; } 
    public string[][] Values { get; set; } 
}