Мне тяжело декодировать мои json-данные. Пожалуйста, помогите. Вот мой код: Вот как выглядит мой json:
[
{"0":"6","ID":"6","1":"USA","Country":"USA","2":"1","Age":"1","3":"Type 5","Type":"Type 5","4":"Brand5","Brands":"Brand5","5":"ashfghdfhhgfdhhdfhhdfg\t\t\t\t\t\t","Contents":"ashfghdfhhgfdhhdfhhdfg\t\t\t\t\t\t","6":"0000-00-00 00:00:00","Time":"0000-00-00 00:00:00"},
{"0":"7","ID":"7","1":"Europe","Country":"Europe","2":"1","Age":"1","3":"Type 5","Type":"Type 5","4":"Brand5","Brands":"Brand5","5":"\t\t\t\tafsfsdgfgh\t\t\t\t\t","Contents":"\t\t\t\tafsfsdgfgh\t\t\t\t\t","6":"0000-00-00 00:00:00","Time":"0000-00-00 00:00:00"},
{"0":"9","ID":"9","1":"USA","Country":"USA","2":"4","Age":"4","3":"Type3","Type":"Type3","4":"Brand4","Brands":"Brand4","5":"sfdsggfhgfhfhg\t\t","Contents":"sfdsggfhgfhfhg\t\t","6":"0000-00-00 00:00:00","Time":"0000-00-00 00:00:00"},
{"0":"10","ID":"10","1":"Europe","Country":"Europe","2":"6","Age":"6","3":"Type3","Type":"Type3","4":"Brand4","Brands":"Brand4","5":"\t\t\t\t\tsfgfdgfhhgfdhghg\t\t\t","Contents":"\t\t\t\t\tsfgfdgfhhgfdhghg\t\t\t","6":"2011-06-03 16:07:08","Time":"2011-06-03 16:07:08"}
]
Это мой класс:
public class Foo {
@SerializedName("0")
public String zero;
@SerializedName("ID")
public String ID;
@SerializedName("1")
public String unu;
@SerializedName("Country")
public String Country;
@SerializedName("2")
public String doi;
@SerializedName("Age")
public String Age;
@SerializedName("3")
public String trei;
@SerializedName("Type")
public String Type;
@SerializedName("4")
public String patru;
@SerializedName("Brands")
public String Brands;
@SerializedName("5")
public String cinci;
@SerializedName("Contents")
public String Contents;
@SerializedName("6")
public String sase;
@SerializedName("Time")
public String Time;
}
Это мой список классов типа Foo:
public class FooList {
public List<Foo> listFoo;
}
И вот как я пытаюсь его декодировать:
Gson gson = new Gson();
Type fooType=new TypeToken<FooList>() { }.getType();
FooList vaccines=gson.fromJson(json, fooType);
Спасибо за помощь.
Ты почти понял это. Следующие примеры десериализуются и выполняются, как ожидалось.
Deserialize в массив Foo:
public class Foo
{
@SerializedName("0")
String zero;
@SerializedName("ID")
String ID;
@SerializedName("1")
String unu;
@SerializedName("Country")
String Country;
@SerializedName("2")
String doi;
@SerializedName("Age")
String Age;
@SerializedName("3")
String trei;
@SerializedName("Type")
String Type;
@SerializedName("4")
String patru;
@SerializedName("Brands")
String Brands;
@SerializedName("5")
String cinci;
@SerializedName("Contents")
String Contents;
@SerializedName("6")
String sase;
@SerializedName("Time")
String Time;
@Override
public String toString()
{
return String.format(
"{Foo: zero=%s, ID=%s, unu=%s, Country=%s, doi=%s, Age=%s, trei=%s, Type=%s, patru=%s, Brands=%s, cinci=%s, Contents=%s, sase=%s, Time=%s}",
zero, ID, unu, Country, doi, Age, trei, Type, patru, Brands, cinci, Contents, sase, Time);
}
public static void main(String[] args) throws Exception
{
Gson gson = new Gson();
Foo[] foos = gson.fromJson(new FileReader("input.json"), Foo[].class);
System.out.println(Arrays.toString(foos));
}
}
Deserialize в список Foo:
public static void main(String[] args) throws Exception
{
Gson gson = new Gson();
Type listOfFooType = new TypeToken<List<Foo>>(){}.getType();
List<Foo> foos = gson.fromJson(new FileReader("input.json"), listOfFooType);
System.out.println(foos);
}
Отключить в FooList, используя Tanner, изменил JSON:
public class Foo
{
...
public static void main(String[] args) throws Exception
{
Gson gson = new Gson();
FooList fooList = gson.fromJson(new FileReader("input.json"), FooList.class);
System.out.println(fooList.listFoo);
}
}
class FooList
{
List<Foo> listFoo;
}
Что делать, если вы попытаетесь:
Gson gson = new Gson();
FooList vaccines = gson.fromJson(json, FooList.class);
Какую ошибку/исключение вы получаете?
UPDATE:
Проблема заключается в том, что вы пытаетесь декодировать элемент List
для объекта, который содержит список элементов. Если вы хотите декодировать в FooList
, то ваша строка JSON должна выглядеть так:
{ "listFoo":
[
{"0":"6","ID":"6","1":"USA","Country":"USA","2":"1","Age":"1","3":"Type 5","Type":"Type 5","4":"Brand5","Brands":"Brand5","5":"ashfghdfhhgfdhhdfhhdfg\t\t\t\t\t\t","Contents":"ashfghdfhhgfdhhdfhhdfg\t\t\t\t\t\t","6":"0000-00-00 00:00:00","Time":"0000-00-00 00:00:00"},
{"0":"7","ID":"7","1":"Europe","Country":"Europe","2":"1","Age":"1","3":"Type 5","Type":"Type 5","4":"Brand5","Brands":"Brand5","5":"\t\t\t\tafsfsdgfgh\t\t\t\t\t","Contents":"\t\t\t\tafsfsdgfgh\t\t\t\t\t","6":"0000-00-00 00:00:00","Time":"0000-00-00 00:00:00"},
{"0":"9","ID":"9","1":"USA","Country":"USA","2":"4","Age":"4","3":"Type3","Type":"Type3","4":"Brand4","Brands":"Brand4","5":"sfdsggfhgfhfhg\t\t","Contents":"sfdsggfhgfhfhg\t\t","6":"0000-00-00 00:00:00","Time":"0000-00-00 00:00:00"},
{"0":"10","ID":"10","1":"Europe","Country":"Europe","2":"6","Age":"6","3":"Type3","Type":"Type3","4":"Brand4","Brands":"Brand4","5":"\t\t\t\t\tsfgfdgfhhgfdhghg\t\t\t","Contents":"\t\t\t\t\tsfgfdgfhhgfdhghg\t\t\t","6":"2011-06-03 16:07:08","Time":"2011-06-03 16:07:08"}
]
}
Если у вас нет выбора, кроме как работать со строкой JSON, которую вы предоставили, вы можете сделать что-то вроде этой работы:
List listOfObjects = g.fromJson(json, List.class);
for(Object obj : listOfObjects) {
FooList.listFoo.add((Foo) obj);
}