预计BEGIN_OBJECT但是BAGIN_ARRAY

时间:2016-01-16 19:15:17

标签: java spring-mvc

我需要你的帮助,我想在字段中输入一个值" 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"}]

1 个答案:

答案 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() );