Как получить данные JSON с помощью Java

1

Я не могу извлечь данные из этого в java. Проблема в том, что после этого будет вызываться имя_валюта_list. Заранее спасибо.

{ 
  "id" : "ets7qkt1luugsj828jugs8vuq5",
  "module_name" : "Users",
  "name_value_list" : { "mobile_max_list_entries" : { "name" : "mobile_max_list_entries",
          "value" : null
        },
      "mobile_max_subpanel_entries" : { "name" : "mobile_max_subpanel_entries",
          "value" : null
        },
      "user_currency_id" : { "name" : "user_currency_id",
          "value" : "-99"
        },
      .
      .


      "user_language" : { "name" : "user_language",
          "value" : "en_us"
        },
      "user_name" : { "name" : "user_name",
          "value" : "abcd"
        },
      "user_number_seperator" : { "name" : "user_number_seperator",
          "value" : ","
        }
    }
}
  • 3
    Что у тебя до сих пор?
  • 0
    Разместите свой код парсера.
Показать ещё 3 комментария
Теги:

2 ответа

0
Лучший ответ

Я бы попробовал использовать google Gson() для десериализации.

Сначала создайте классы объектов (или объектов), например:

public class MobileMaxListEntry implements Serializable {
@Expose
@SerializedName("name")
private String name;
@Expose
@SerializedName("name")
private String value;
//getters / setters
}

Сделайте это для каждого объекта, который у вас есть. Затем:

public class ValuesList implements Serializable {
@Expose
@SerializedName("mobile_max_list_entries")
private MobileMaxListEntry mobile_max_list_entries;
@Expose
@SerializedName("mobile_max_subpanel_entries")
private MobileMaxSubpanelEntry mobile_max_subpanel_entries;
//getters/setters for everything
}

Затем класс ответа:

public class MyResponseClass implements Serializable {  
@Expose
@SerializedName("id")
private String objectId;
@Expose
@SerializedName("module_name")
private String moduleName;
@Expose
@SerializedName("name_value_list")
private ValuesList valuesList;
//getters / setters for everything
}

Затем, наконец, в вашем коде:

Gson gson = new Gson();
String json = "your_json_here";
MyResponseClass  deserialized = gson.fromJson(json, MyResponseClass.class);

Если вы получили сообщение об ошибке, попробуйте добавить стандартные конструкторы по умолчанию для каждого класса.

  • 0
    хороший код и работает очень эффективно
0

Просто извлеките данные в Map<String,Object> из строки JSON.

Библиотека GSON

Type type = new TypeToken<Map<String, Object>>() {}.getType();
Map<String, Object> data = new Gson().fromJson(jsonString, type);
System.out.println(data.get("name_value_list"));

Библиотека Джексона

ObjectMapper mapper = new ObjectMapper();
TypeReference<Map<String, Object>> typeRef = new TypeReference<Map<String, Object>>() {};
Map<String, Object> data = mapper.readValue(reader, typeRef);
System.out.println(data.get("name_value_list"));

Вы можете создать класс POJO, который является точной копией строки JSON и может преобразовать ее в объект Java с помощью GSON.

образец кода:

class MobileDetail{
    private NameValueList name_value_list;
    private String module_name;
    private String id;
}

class NameValueList{
    private NameValue mobile_max_list_entries;
    private NameValue mobile_max_subpanel_entries;
    private NameValue user_currency_id;
    private NameValue user_language;
    private NameValue user_name;
    private NameValue user_number_seperator;

}

class NameValue{
    private String name;
    private String value;
}

...

MobileDetail data =new Gson().fromJson(reader, MobileDetail.class);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню