我正在尝试通过GSON库将我的对象转换为String。
我写的是这样的:Gson()。toJson(this)和String
我收到的并不完整。
这是我的“这个”对象:
如您所见,它具有准确性字段(结果 - > track-> points->准确度) 但是当我执行这个Gson()。toJson(this)时,我得到了没有这个字段的字符串。怎么了?
{
"carId": 14,
"closed": 1442409732,
"commentEnd": "оо",
"guid": "bbc329e4-65c5-4b16-91d5-45283ca9dcb7",
"isDeleted": false,
"lastUpdate": 0,
"litersEnd": -23.1,
"litersStart": -23.1,
"number": 0,
"odometrEnd": 25,
"odometrStart": 44,
"opened": 1442409723,
"id": 0,
"status": 2,
"Tracks": [
{
"categoryId": 2,
"closed": 1442409729,
"commentEnd": "рр",
"distance": 0,
"guid": "aba4de4a-5bc7-49fc-a537-b8da3dd17783",
"opened": 1442409723,
"points": [
{
"dateCreated": 1442409725,
"guid": 579,
"lat": 56.8408432,
"lng": 53.2100482
}
],
"id": 0,
"statusNumber": 2
}
],
}
我对Point对象的类看起来像那样(只是声明变量:
@DatabaseTable(tableName = "points")
public class Point implements Serializable {
@DatabaseField(generatedId = true)
@SerializedName("guid")
long id;
@DatabaseField(foreign = true, columnName = "trackId")
transient Track track;
@DatabaseField
double lat;
@DatabaseField
double lng;
@DatabaseField
long dateCreated;
@DatabaseField
transient float accuracy; //this field is faulty
transient String provider;
public Point() {}
public Point(double lat, double lng, long dateCreated) {
this.lat = lat;
this.lng = lng;
this.dateCreated = dateCreated / 1000L;
}
}
和点是跟踪对象的字段,该字段是 DrivingList 对象的字段,其扩展可上传我在其中运行此代码的抽象类:
public abstract class Uploadable {
public String toJson() {
return new Gson().toJson(this);
}
答案 0 :(得分:1)
抱歉,我班上的这个字段很短暂。
Java中的transient关键字用于表示不应序列化字段。
答案 1 :(得分:0)
我的json数据就像
{"name":"naval","edu":"pg","gender":"male"}
所以我的模型类将存储json数据的值应该是这样的
public class Model
{
String name,edu,gender;
public String getName()
{
return name;
}
public String getEdu()
{
return edu;
}
public String getGender()
{
return gender;
}
public String setGender(String gender)
{
this.gender=gender;
}
public String setName(String name)
{
this.name=name;
}
public String setEdu(String edu)
{
this.edu=edu;
}
}
我们希望json数据的位置将被流式传输或下载 在那个地方写下这段代码
String strJson=getjsonString();//your method to get jsondata as string
或本地测试用例
strJson="{\"name\":\"naval\",\"edu\":\"pg\",\"gender\":\"male\"}";//this is for demo
Gson gson=new Gson();
Model model = gson.fromJson(strJson,Model.class); System.out.println(model.getName()+","+model.getEdu()+","+model.getGender());
这将打印出像这样的
naval,pg,male
将json写入模型类 当你想将类对象转换为jsonString时,请使用此
Model modelInfo =new Model();
modelInfo.setName("Vijay");model.setEdu("B.tech");
String strJsonobj=gson.toJson(modelInfo);
System.out.println(strJSONOBJ);
IT将像这样打印json
{"name":"Vijay","edu":"B.tech","gender":"null"}
正如您所看到的那样,未设置的变量将默认值为null 或者如果json将有额外的数据在课堂上没有,它将被放弃,并且将在那里设置相应的值