我有以下JSON数据,我想用GSON libray解析。其中存在小问题,需要专家的一些指导。
{"Values":{"Items":[{"Key":"LastUpdateLabel","Value":"Last Update"}]}}
public class Values {
private List<Item> Items;
/**
* @return the items
*/
public List<Item> getItems() {
return Items;
}
/**
* @param items
* the items to set
*/
public void setItems(List<Item> items) {
Items = items;
}
}
final Values val = new Gson().fromJson(res, Values.class);
List<Item> items = val.getItems();
Log.i(TAG, "Val size = " + items.size());
if (items != null && !items.isEmpty()) {
for (Item item : items) {
Log.i(TAG, "Key = " + item.getKey());
Log.i(TAG, "Value = " + item.getValue());
}
}
但它不起作用。任何人都可以帮助我理解这一点,因为我是GSON的新手。
答案 0 :(得分:1)
您需要另一个包含values
字段的类:
public class JsonData {
private Values values;
}
public class Values {
private List<Item> items;
}
public class Item {
private String key;
private String value;
}
要解析Json,我使用用FieldNamingPolicy.UPPER_CAMEL_CASE
创建的Gson,所以我可以使用Java命名约定来变量名:
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
JsonData val = gson.fromJson(res, JsonData.class);
如果您不想使用FieldNamingPolicy.UPPER_CAMEL_CASE
,请将变量名称转换为String Key
,String Value
等。但我认为遵循Java命名约定会更好。
答案 1 :(得分:0)
为此,我正在使用com.google.api.client.json.gson.GsonFactory
public static Object parseClass(Class clazz, String object) {
try {
GsonFactory instance = GsonFactory.getDefaultInstance();
return instance.fromString(object, clazz);
} catch (IOException e) {
LogUtil.loge(TAG, "Error while parsing JSON object");
return null;
}
}
答案 2 :(得分:0)
我不太了解gson / json,但我尝试过实现这样的解析:
public static List<LevelModel> getLevels(){
Gson gson = new Gson();
List<LevelModel> levels;
String levelsJson = Gdx.files.internal("data/world/levels.json").readString();
levels = Arrays.asList(gson.fromJson(levelsJson, LevelModel[].class));
return levels;
}