Json to C # Deserializing с Newtonsoft.Json [duplicate]

В главных ответах на этой странице используются слишком простые примеры, такие как объект с одним свойством (например, {name: value}). Я думаю, что простой, но реальный пример жизни может помочь кому-то.

Итак, это JSON, возвращенный API-интерфейсом Google Translate:

{
  "data": 
     {
        "translations": 
          [
            {
              "translatedText": "Arbeit"
             }
          ]
     }
}

Я хочу получить значение атрибута «translText», например. «Arbeit» с использованием Google Gson.

Два возможных подхода:

  1. Получить только один необходимый атрибут
    String json  = callToTranslateApi("work", "de");
    JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
    return jsonObject.get("data").getAsJsonObject()
            .get("translations").getAsJsonArray()
            .get(0).getAsJsonObject()
            .get("translatedText").getAsString();
    
  2. Создать объект Java из JSON
    class ApiResponse {
        Data data;      
        class Data {
            Translation[] translations;         
            class Translation {
                String translatedText;
            }
         }
     }
    
    ...
     Gson g = new Gson();
     String json =callToTranslateApi("work", "de");
     ApiResponse response = g.fromJson(json, ApiResponse.class);
     return response.data.translations[0].translatedText;
    
32
задан Patrick M 2 July 2014 в 22:15
поделиться

2 ответа

Вы можете десериализовать словарь.

public class Item
{
    public string fajr { get; set; }
    public string sunrise { get; set; }
    public string zuhr { get; set; }
    public string asr { get; set; }
    public string maghrib { get; set; }
    public string isha { get; set; }
}

var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);
49
ответ дан L.B 31 August 2018 в 18:30
поделиться
42
ответ дан ken2k 31 August 2018 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: