2017-07-07 11 views
1

Google翻訳APIを使用して文字列の言語を検出しています。 APIがJSONを返しています:C#を使用してGoogle翻訳APIからJSONを非直列化する

{ 
    "data": { 
     "detections": [ 
      [ 
       { 
        "confidence": 0.37890625, 
        "isReliable": false, 
        "language": "ro" 
       } 
      ] 
     ] 
    } 
} 

私はまだそれを逆シリアル化する方法が見つかりませんでした。私はSystem.Runtime.Serializationを使用していますし、これは私のコードです:

[DataContract] 
public class GoogleTranslationResponse 
{ 
    [DataMember(Name = "data")] 
    public Data Data { get; set; } 
} 
[DataContract] 
public class Data 
{ 
    [DataMember(Name = "detections")] 
    public List<Detection> Detections { get; set; } 
} 

[DataContract] 
public class Detection 
{ 
    [DataMember(Name = "confidence")] 
    public decimal Confidence { get; set; } 

    [DataMember(Name = "isReliable")] 
    public bool IsReliable { get; set; } 

    [DataMember(Name = "language")] 
    public string Language { get; set; } 
} 
// ... 
var jsonSerializer = new DataContractJsonSerializer(typeof(GoogleTranslationResponse)); 
result = (GoogleTranslationResponse)jsonSerializer.ReadObject(new MemoryStream(Encoding.Unicode.GetBytes(responseData))); 

私は、結果としてこれを取得しています:あなたのJSONで

Confidence: 0 
IsReliable:false 
Language:null 
+1

デシリアライズを実行しようとしているコードは何ですか? –

+2

'' detects "'は配列の配列です。あなたはリストのリストを使ってそれをモデル化する必要がありますか? –

+0

@Brian Rogers私は質問を更新しました。 –

答えて

3

"detections"の値が2Dジャグ配列です:

"detections": [ [ { ... } ] ] 

したがって、あなたのモデルは、ネストされたコレクションを使用してこれを反映する必要があります。

[DataContract] 
public class Data 
{ 
    [DataMember(Name = "detections")] 
    public List<List<Detection>> Detections { get; set; } 
} 
関連する問題