Java 在json中解析arraylist
我想用Gson解析这个JSON文件:Java 在json中解析arraylist,java,json,parsing,arraylist,Java,Json,Parsing,Arraylist,我想用Gson解析这个JSON文件: [ { "id": "1", "anneeMois": "201611", "dateModification": "2016-04-18", "montantValide": "500.00", "nbJustificatifs": "3", "visitorId": "1", "etat": { "id": "1", "libEtat": "Saisie clôturée
[
{
"id": "1",
"anneeMois": "201611",
"dateModification": "2016-04-18",
"montantValide": "500.00",
"nbJustificatifs": "3",
"visitorId": "1",
"etat": {
"id": "1",
"libEtat": "Saisie clôturée"
}
},
{
"id": "8",
"anneeMois": "201617",
"dateModification": "2016-08-16",
"montantValide": "650.00",
"nbJustificatifs": "7",
"visitorId": "1",
"etat": {
"id": "1",
"libEtat": "Saisie clôturée"
}
},
{
"id": "2",
"anneeMois": "201610",
"dateModification": "2016-03-19",
"montantValide": "300.00",
"nbJustificatifs": "2",
"visitorId": "1",
"etat": {
"id": "2",
"libEtat": "Fiche créée, saisie en cours"
}
}
]
我的课程是:
public class FicheFrais implements java.io.Serializable
{
private int id;
private String anneeMois;
private Date dateModification;
private float montantValide;
private int nbJustificatifs;
private int visitorId;
@SerializedName("etat")
protected Etat etat;
.....
public class Etat implements java.io.Serializable{
private int id_etat;
private String lib_etat;
...
我的代码是:
public static <T> List<T> toList(String json, Class<T> typeClass)
{
List<T> arr =new Gson().fromJson(json, new
ListParameterizedType<T>
(typeClass));
return arr;
}
List<FicheFrais> mesFichesFrais = toList(sb.toString(),FicheFrais.class);
我给你我的职责
public class ListParameterizedType<T> implements ParameterizedType
{
private Class<?> wrapped;
public ListParameterizedType(Class<T> wrapper)
{
this.wrapped = wrapper;
}
@Override
public Type[] getActualTypeArguments()
{
return new Type[] { wrapped };
}
@Override
public Type getRawType()
{
return List.class;
}
@Override
public Type getOwnerType()
{
return null;
}
}
When i call my arrayList with this code
List<FicheFrais> mesFichesFrais =
toList(sb.toString(),FicheFrais.class);
I obtain values in all fields except in my object Etat who is empty
公共类ListParameteredType实现ParameteredType
{
私有类包装;
公共ListParameteredType(类包装器)
{
this.wrapped=包装器;
}
@凌驾
公共类型[]getActualTypeArguments()
{
返回新类型[]{wrapped};
}
@凌驾
公共类型getRawType()
{
返回列表.class;
}
@凌驾
公共类型getOwnerType()
{
返回null;
}
}
当我用这个代码调用我的arrayList时
列表mesFichesFrais=
toList(sb.toString(),FicheFrais.class);
我获取所有字段中的值,但对象Etat中的值为空
您是否有一个序列化示例,如:
-使用对象初始化
-使用库Gson
-从json到arraylist的流量
谢谢您的代码似乎正确。只需检查您的json字符串是否正确,检查您的
sb.toString()
中是否包含etat变量。最后,我使用了一个带有JSONArray的旧解决方案,但没有库Gson此库使用arraylist 谢谢你的回答
jsonarray = new JSONArray(sb.toString());
for(int i=0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
FicheFrais uneF = new FicheFrais();
uneF.setId(Integer.parseInt( jsonobject.getString("id")));
uneF.setAnneeMois(jsonobject.getString("anneeMois"));
uneF.setDateModification(Date.valueOf(jsonobject.getString("dateModification")));
uneF.setMontantValide(Float.parseFloat(jsonobject.getString("montantValide")));
uneF.setNbJustificatifs(Integer.parseInt(jsonobject.getString("nbJustificatifs")));
uneF.setVisitorId(Integer.parseInt(jsonobject.getString("visitorId")));
// On récupère l'état
JSONObject unE = jsonobject.getJSONObject("etat");
Etat unEtat = new Etat ();
unEtat.setId_etat(unE.getInt("id"));
unEtat.setLib_etat(unE.getString("libEtat"));
uneF.setEtat(unEtat);
mesFichesFrais.add(uneF);
jsonarray=newjsonarray(sb.toString());
for(int i=0;i
你没有问任何问题…问题是什么?你的格式真的很混乱。99%的问题在这里得到了回答可能是重复的否我还没有找到我的问题的解决方案谢谢是的,我的代码似乎是正确的,sb.toString()的开头是[{“id”:“1”,“anneeMois”:“201611”,“dateModification”:“2016-04-18”,“montantValide”:“500.00”,“nbjusticatifs”:“3”,“visitorId”:“1”,“etat”:{“id”:“1”,“libEtat”:“Saisie cl\u00f4tur\u00e9e”},{“id”:“8”,“anneeMois”:“201617”,“dateModification”:“2016-08-16”,“montantValide”:“650.00”,“他已经为我的sb.ToString()…最后,我使用了一个没有库gson的旧解决方案。您是否尝试过使用gson Type=new ListParameterizedType(clazz);List-mesFichesFrais=gson.fromJson(json,Type);
jsonarray = new JSONArray(sb.toString());
for(int i=0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
FicheFrais uneF = new FicheFrais();
uneF.setId(Integer.parseInt( jsonobject.getString("id")));
uneF.setAnneeMois(jsonobject.getString("anneeMois"));
uneF.setDateModification(Date.valueOf(jsonobject.getString("dateModification")));
uneF.setMontantValide(Float.parseFloat(jsonobject.getString("montantValide")));
uneF.setNbJustificatifs(Integer.parseInt(jsonobject.getString("nbJustificatifs")));
uneF.setVisitorId(Integer.parseInt(jsonobject.getString("visitorId")));
// On récupère l'état
JSONObject unE = jsonobject.getJSONObject("etat");
Etat unEtat = new Etat ();
unEtat.setId_etat(unE.getInt("id"));
unEtat.setLib_etat(unE.getString("libEtat"));
uneF.setEtat(unEtat);
mesFichesFrais.add(uneF);