Gson 解析 Json 与列表<String>
Gson Parse Json with List<String>
我有一个 class 有一些字段:
public class GsonRepro {
class A {
private List<String> field1 = new ArrayList<>();
private String name;
private Integer status;
public A(){
}
public List<String> getfield1() { return field1; }
public void setField1(List<String> field1) { this.field1 = field1; }
public String getName() { return name; }
public void setName() { this.name = name; }
public Integer getStatus() { return status; }
public void setStatus(int status) { this.status = status; }
}
public static void main(String[] args) {
String str = "{\"name\":\"my-name-1\",\"status\":0,\"field1\":[\"0eac6b1d3d494c2d8568cd82d9d13d5f\"]}";
A a = new Gson().fromJson(str, A.class);
}
}
所有字段都已解析,但 List<String> field1
,我怎样才能让它工作?
解法:
上面的代码工作得很好。最初,我只是在列表字段中输入错误。
您可以尝试使用 TypeToken,就像 this 对另一个问题的回答。
对你来说它看起来像这样:
import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;
...
Type type = new TypeToken<A>(){}.getType();
A a = new Gson().fromJson(str, type);
问候
我尝试使用您分享的上述代码,并且运行良好,没有任何问题。请检查以下代码并验证,
public static void main(String[] args) {
String str = "{\"name\":\"my-name-1\",\"status\":0,\"field1\":[\"0eac6b1d3d494c2d8568cd82d9d13d5f\"]}";
A a = new Gson().fromJson(str, A.class);
System.out.println(a.getName());
System.out.println(a.getStatus());
System.out.println(a.getfield1());
}
以下是在控制台上打印的输出,
my-name-1
0
[0eac6b1d3d494c2d8568cd82d9d13d5f]
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
class A {
private List<String> field1 = new ArrayList<>();
private String name;
private Integer status;
public A() {
}
public List<String> getfield1() {
return field1;
}
public void setField1(List<String> field1) {
this.field1 = field1;
}
public String getName() {
return name;
}
public void setName() {
this.name = name;
}
public Integer getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
public class GsonParseList {
public static void main(String[] args) {
String str = "{'name':'my-name-1','status':0,'field1':['0eac6b1d3d494c2','d8568cd82d9d13d5f']}";
A a = new Gson().fromJson(str, A.class);
System.out.println(a.getfield1());
}
}
我有一个 class 有一些字段:
public class GsonRepro {
class A {
private List<String> field1 = new ArrayList<>();
private String name;
private Integer status;
public A(){
}
public List<String> getfield1() { return field1; }
public void setField1(List<String> field1) { this.field1 = field1; }
public String getName() { return name; }
public void setName() { this.name = name; }
public Integer getStatus() { return status; }
public void setStatus(int status) { this.status = status; }
}
public static void main(String[] args) {
String str = "{\"name\":\"my-name-1\",\"status\":0,\"field1\":[\"0eac6b1d3d494c2d8568cd82d9d13d5f\"]}";
A a = new Gson().fromJson(str, A.class);
}
}
所有字段都已解析,但 List<String> field1
,我怎样才能让它工作?
解法:
上面的代码工作得很好。最初,我只是在列表字段中输入错误。
您可以尝试使用 TypeToken,就像 this 对另一个问题的回答。
对你来说它看起来像这样:
import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;
...
Type type = new TypeToken<A>(){}.getType();
A a = new Gson().fromJson(str, type);
问候
我尝试使用您分享的上述代码,并且运行良好,没有任何问题。请检查以下代码并验证,
public static void main(String[] args) {
String str = "{\"name\":\"my-name-1\",\"status\":0,\"field1\":[\"0eac6b1d3d494c2d8568cd82d9d13d5f\"]}";
A a = new Gson().fromJson(str, A.class);
System.out.println(a.getName());
System.out.println(a.getStatus());
System.out.println(a.getfield1());
}
以下是在控制台上打印的输出,
my-name-1
0
[0eac6b1d3d494c2d8568cd82d9d13d5f]
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
class A {
private List<String> field1 = new ArrayList<>();
private String name;
private Integer status;
public A() {
}
public List<String> getfield1() {
return field1;
}
public void setField1(List<String> field1) {
this.field1 = field1;
}
public String getName() {
return name;
}
public void setName() {
this.name = name;
}
public Integer getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
public class GsonParseList {
public static void main(String[] args) {
String str = "{'name':'my-name-1','status':0,'field1':['0eac6b1d3d494c2','d8568cd82d9d13d5f']}";
A a = new Gson().fromJson(str, A.class);
System.out.println(a.getfield1());
}
}