繁体   English   中英

java json字符串到对象的arraylist

[英]java json string to arraylist of objects

我有Json String,看起来像这样

String RET=[{"id":"1","name":"koukouvagia","category":"c","lat":"35.52563370000000","lon":"24.05584680000000","address":"Alexi Minoti","phone":"2821027449","counter":"0"},{"id":"2","name":"theatro","category":"c","lat":"35.51392000000000","lon":"24.01979000000000","address":"Plateia Agoras 69","phone":"2821008500","counter":"0"},{"id":"3","name":"mikro kafe","category":"c","lat":"35.51700560000000","lon":"24.02495420000000","address":"Akth Miaouli 6","phone":"2821059321","counter":"0"},{"id":"4","name":"mikro efeteio","category":"c","lat":"35.51033020000000","lon":"24.03102900000000","address":"Plateia Dikastirion","phone":"2821028112","counter":"0"},{"id":"5","name":"Grhgorhs","category":"c","lat":"35.51355300000000","lon":"24.02024900000000","address":"N.Plasthra \u0026 S.Venizelou","phone":"0","counter":"0"}]

并希望将此Json字符串转换为Objects的arraylist并将所有元素放在一个类(Data Object.class)上并打印这些元素。

    Type listOfTestObject=new TypeToken<List<DataObject>>(){}.getType();
    List<DataObject> list2 = g.fromJson(RET, listOfTestObject);

     for(int i = 0; i < list2.size(); i++) {
            System.out.println(list2.get(i).getNameF());
        }

输出为:

null
null
null
null
null

我创建的类具有该形式

public class DataObject {
  String idF;
  String nameF;
  String categoryF;
  String latF;
  String lonF;
  String addressF;
  String phoneF;
  String counterF;


public String getIdF() {
    return idF;
}
public void setIdF(String idF) {
    this.idF = idF;
}
public String getNameF() {
    return nameF;
}
public void setNameF(String nameF) {
    this.nameF = nameF;}

.
.
.

}

我做错了什么?

要解决此问题,您要做的就是在每个字段中添加注释:

@SerializedName("id")
String idF;
@SerializedName("name")
String nameF;

List <DataObject>与List的类型相同。 对于数组解析,您应该编写以下代码:

List<DataObject> list2 = new ArrayList<DataObject>((DataObject[])g.fromJson(RET, DataObject[]));

for(int i = 0; i < list2.size(); i++) {
        System.out.println(list2.get(i).getNameF());
}

而且,您还应该为解析器解释将哪个字段连接到哪个JSON参数。 如果使用GSON解析器,则可以编写注释。 或者对于杰克逊,您应该重命名您的吸气剂和塞特剂,正如评论中告诉您的那样。

注释应该看下:

class DataObject {
  @SerializedName("id")
  String idF;
}

并用JSON字符串写在方括号字段名称中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM