我需要你的帮助,我想在字段中输入一个值" foto"但我得到一些错误预期BEGIN_OBJECT但是BAGIN_ARRAY。 这是我的DAO
@SuppressWarnings("unchecked")
public String detinst (String json)throws Exception{
sesi = sf.openSession();
tx = sesi.beginTransaction();
System.out.println("--------DAO---------");
System.out.println("22222222222");
installasimodel hasil = gson.fromJson(json, installasimodel.class);
int tid = hasil.getTid();
System.out.println("TID :"+tid);
SQLQuery query=sesi.createSQLQuery("select * from istlsi_edc_tkn_tebel where tid='"+tid+"'");
List<installasimodel> result = query.addEntity(installasimodel.class).list();
String inst = gson.toJson(result);
System.out.println("hasil query :"+inst);
////////////////////////////
String intoFoto ="asanskasndjksnds";
/////////////////////////////
sesi.close();
return inst;
}
这是我的模特
........
@Column(name="id_spv")
private int id_spv;
@Column(name="own_mrchn")
private String own_mrchn;
@Column(name="phone")
private String phone;
@Column(name="kde_pos")
private int kde_pos;
@Column(name="sts_edc")
private int sts_edc;
@Column(name="ms")
private String ms;
@Column(name="sc")
private String sc;
@Column(name="foto")
private String foto;
@Column(name="ttd")
private String ttd;
..............
如果程序启动,这是一个json
[{..........."phone":"8555555","kde_pos":121212,"sts_edc":0,"foto":""}]
如果我们看看上面的json,那么&#34; foto&#34;是空的,我该怎样做才能像这样
[{..........."phone":"8555555","kde_pos":121212,"sts_edc":0,"foto":"asanskasndjksnds"}]
答案 0 :(得分:0)
你需要删除封闭的&#34; []&#34;来自你的json,因为Gson需要一个JSON对象,而不是一个JSON对象数组。 您将模型列表序列化为JSON:
List<installasimodel> result = query.addEntity(installasimodel.class).list();
String inst = gson.toJson(result); //this serializes a list and the resulting JSON is a JSON array of objects ([{...}]).
但在您的反序列化代码中,您尝试将数组反序列化为单个模型:
installasimodel hasil = gson.fromJson(json, installasimodel.class);
因此,您需要更改序列化以序列化列表的第一个对象(假设长度始终为1):gson.toJson(result.get(0))
或者您需要更改更改反序列化,以便GSON需要一个列表:
List<installasimodel> result = gson.fromJson(json, new TypeToken<List<installasimodel>>(){}.getType() );