2016-09-15 14 views
1

JSON.netを使用してJSONを解析していますが、List of Listのオブジェクトが正しく出力されません。ここに私のJSON.netのコードは次のとおりです。ここでJSONの解析値が表示されない

var reader = new StreamReader(GenerateStreamFromString(decodedString)); 
      var rootObject = JsonConvert.DeserializeObject<RootObject>(reader.ReadToEnd()); 

txtOut.Text = rootObject.Results.output1.value.ColumnNames[0].ToString() + " : " + 
rootObject.Results.output1.value.Values[0].ToString(); 

は、JSONクラスです:

public class Value 
{ 
    public List<string> ColumnNames { get; set; } 
    public List<string> ColumnTypes { get; set; } 
    public List<List<string>> Values { get; set; } 
} 

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

public class Results 
{ 
    public Output1 output1 { get; set; } 
} 

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

出力は次のようになります。

Scored Probabilities for Class "BackPocket" : 0.37687685364 

私が手にしながら:

Scored Probabilities for Class "BackPocket" : System.Collections.Generic.List`1[System.String] 

私はどこで間違っているのですか?

ありがとうございました。

P.S.

{"Results":{"output1":{"type":"table","value":{"ColumnNames":["Scored Probabilities for Class \"BackPocket\"","Scored Probabilities for Class \"Ear\"","Scored Probabilities for Class \"Handbag\"","Scored Probabilities for Class \"SidePocket\"","Scored Labels"],"ColumnTypes":["Double","Double","Double","Double","String"],"Values":[["0.0249993801116943","0.999469399452209","0.00426889630034566","0.00104729761369526","Ear"]]}}}} 
+0

あなたのJSONは有効ではありません。 http://json2csharp.com/#で確認してください –

+0

なぜ 'List'ではなく最初の値にするのですか?あなたは結局リストのリストを持っているので、あなたが望むその "セカンダリ"リストのどの要素を指定する必要があります – UnholySheep

+0

@ShannonHolsingerちょうどチェックし修正しました。 –

答えて

1

それはリストのリストであるとしてこれを試してみてください:ここではサンプルJSONです。あなたは現在、1つのレベルだけを深く索引付けしています。あなたは2つのレベルを深く索引付けする必要があります。

txtOut.Text = rootObject.Results.output1.value.ColumnNames[0].ToString() + " : " + 
rootObject.Results.output1.value.Values[0][0].ToString(); 
0

があなたのJSONクラス/クラス

[DataContract]  
public class Value 
{ 
[DataMember] 
public List<string> ColumnNames { get; set; } 
[DataMember] 
public List<string> ColumnTypes { get; set; } 
[DataMember] 
public List<List<string>> Values { get; set; } 
} 
[DataContract] 
public class Output1 
{ 
[DataMember] 
public string type { get; set; } 
[DataMember] 
public Value value { get; set; } 
} 
[DataContract] 
public class Results 
{ 
[DataMember] 
public Output1 output1 { get; set; } 
} 
[DataContract] 
public class RootObject 
{ 
[DataMember] 
public Results Results { get; set; } 
} 
+1

これらの属性は必要ありません。 –

+0

OPが最初に投稿されたときではないので、自動的に追加されます.Jsonが正しいかどうかを確認するだけです。 –

1

要素0はリストなので、あなたが印刷可能な文字列を取得するためにstring.Joinを使用することができます。..

txtOut.Text = rootObject.Results.output1.value.ColumnNames[0].ToString() + " : " + 
       string.Join(";",rootObject.Results.output1.value.Values[0]); 

OUTPUTは次のようになります。

Scored Probabilities for Class "BackPocket" : 0.0249993801116943;0.999469399452209;0.00426889630034566;0.00104729761369526;Ear 
関連する問題