有没有办法在Java中存储Json对象?

时间:2017-06-20 12:22:35

标签: java android json

我有一个应用程序已将一些数据存储在JSON对象中。示例如下,

有人可以告诉我,我们可以在JAVA上做同样的事情吗?有没有办法在java上存储这样的数据? Java对象?

我对此很新。

您能告诉我转换上述JSON对象的步骤以及它在java中的外观吗?请?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用GSON lib。

GSON依赖包含在gradle中

compile 'com.google.code.gson:gson:2.8.0'
然后在代码中

。 POJO

public class Animal {

    public String parentName;
}

public class Cat extends Animal{
    public String subNameC;
}

public class Dog  extends Animal{
    public String subNameD;
}

然后假设你有这样的json字符串

 String data="  [
        {'subNameC':'I am cat','parentName':'I am animal C'},
        {'subNameD":'I am dog','parentName':'I am animal D'}
        ]";

然后创建GSON的对象

Gson gson = new Gson();

最后,我们使用fromJson()从JSON映射到Java对象:

TypeToken<List<Animal>> token = new TypeToken<List<Animal>>() {};
List<Animal> animals = gson.fromJson(data, token.getType());

完成

你的json对象的Pojo如下

-----------------------------------com.example.Places.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Places {

@SerializedName("1")
@Expose
private com.example._1 _1;
@SerializedName("2")
@Expose
private com.example._2 _2;

public com.example._1 get1() {
return _1;
}

public void set1(com.example._1 _1) {
this._1 = _1;
}

public com.example._2 get2() {
return _2;
}

public void set2(com.example._2 _2) {
this._2 = _2;
}

}
-----------------------------------com.example._1.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class _1 {

@SerializedName("name")
@Expose
private String name;
@SerializedName("lat")
@Expose
private double lat;
@SerializedName("lon")
@Expose
private double lon;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getLat() {
return lat;
}

public void setLat(double lat) {
this.lat = lat;
}

public double getLon() {
return lon;
}

public void setLon(double lon) {
this.lon = lon;
}

}
-----------------------------------com.example._2.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class _2 {

@SerializedName("name")
@Expose
private String name;
@SerializedName("lat")
@Expose
private double lat;
@SerializedName("lon")
@Expose
private double lon;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getLat() {
return lat;
}

public void setLat(double lat) {
this.lat = lat;
}

public double getLon() {
return lon;
}

public void setLon(double lon) {
this.lon = lon;
}

}

您的JSON字符串

String data="{
'places': {
    '1': {'name': 'Pettah','lat': 6.93321,'lon': 79.8554},
    '2': {'name': 'Fort Railway Station','lat': 6.93408,'lon': 79.8502}
}
}";
Gson gson = new Gson();
TypeToken<List<Places>> token = new TypeToken<List<Places>>() {};
List<Places> animals = gson.fromJson(data, token.getType());