如何在JAVA中为Ext.data.JsonStore创建JSONObject?

如何在JAVA中为Ext.data.JsonStore创建JSONObject?,java,json,extjs,Java,Json,Extjs,这是我的ExtJS代码,用于在网格中显示我的记录 var remoteProxy = new Ext.data.ScriptTagProxy({ url : 'hastanebilgilerinigetir' }); var recordFields = [ { name : 'hid', mapping : 'hid'},

这是我的ExtJS代码,用于在网格中显示我的记录

   var remoteProxy = new Ext.data.ScriptTagProxy({
                url : 'hastanebilgilerinigetir'
            });

            var recordFields = [
                                { name : 'hid',          mapping : 'hid'},
                                { name : 'isim',   mapping : 'isim'},
                                { name : 'adres',    mapping : 'adres'},
                                { name : 'telefon',      mapping : 'telefon'},
                                { name : 'bashekimid',        mapping : 'bashekimid' }
            ];

            var remoteJsonStore = new Ext.data.JsonStore({
                proxy           : remoteProxy,
                storeId         : 'ourRemoteStore',
                root            : 'records',
                autoLoad        : false,
                //totalProperty   : 'totalCount',
                remoteSort      : true,
                fields          : recordFields,
                idProperty      : 'hid'
            });

            var textFieldEditor = new Ext.form.TextField();

            var numberFieldEditor = {
                    xtype     : 'numberfield',
                    minLength : 5,
                    maxLength : 5
            };

            var columnModel = [
                               {
                                   header    : 'Hastane Adı',
                                   dataIndex : 'isim',
                                   sortable  : true,
                                   editor    : textFieldEditor
                               },
                               {
                                   header    : 'Telefon',
                                   dataIndex : 'telefon',
                                   sortable  : true,
                                   editor    : textFieldEditor
                               },
                               {
                                   header    : 'Adres',
                                   dataIndex : 'adres',
                                   sortable  : true,
                                   editor    : textFieldEditor
                               },
                               {
                                   header    : 'Baş Hekim ID',
                                   dataIndex : 'bashekimid',
                                   sortable  : true,
                                   editor    : numberFieldEditor
                               },
                               {
                                   header    : 'Hastane ID',
                                   dataIndex : 'hid',
                                   sortable  : true,
                                   editor    : numberFieldEditor
                               }
                               ];
    var grid = {
            xtype      : 'editorgrid',
            columns    : columnModel,
            id         : 'myEditorGrid',
            store      : remoteJsonStore,
            loadMask   : true,
            bbar       : pagingToolbar,
            stripeRows : true,
            viewConfig : {
                forceFit : true
            },
            listeners        : {
                cellcontextmenu : doCellCtxMenu,
                destroy         : function(thisGrid) {
                    if (thisGrid.rowCtxMenu) {
                        thisGrid.rowCtxMenu.destroy();
                    }
                }
            }
    };

    var hastanegridi = new Ext.Panel({
        title: 'Hastaneler',
        height  : 700,
        width   : 950,
        border  : false,
        layout  : 'fit',
        items   : grid
    });


    remoteJsonStore.load({
        params : {
            start : 0,
            limit : 50
        }
    });
我有以下java代码来创建JSONObject

    @Override
    public JSONObject listHastanesAsJson() {
        List<Hastane> lst = hastaneDao.listHastane();

        JSONArray arr = new JSONArray();

//      int i=lst.size();
//      JSONObject counter = new JSONObject();
//      counter.put("totalCount", i);
//      arr.add(counter);


        for(Hastane kan:lst){

            JSONObject obj = new JSONObject();

            obj.put("hid", kan.getHid());
            obj.put("isim", kan.getIsim());
            obj.put("adres", kan.getAdres());
            obj.put("telefon", kan.getTelefon());
            obj.put("bashekimid", kan.getBahekimid());
            arr.add(obj);
        }


        JSONObject o = new JSONObject();
        o.put("records", arr);
        return o;
    }
但当我试图在浏览器中显示我的数据时,我会在“有效标签”下面出现错误

在服务器端创建JSONObject时是否有错误

我的json数据必须与此链接中的类似,但我不知道如何像这样构造我的数据:

您可以从服务器发送类似的内容,或者返回JSONArray。
我从来没有从事过
ExtJs
,但这就是我在
DOJO
中填充网格的方式,您正在使用
Ext.data.ScriptTagProxy
它用于JSONP(跨域请求)

您的请求url应该如下所示:

callbackFunction({
    "records": [
        {
            "hid": 1,
            "isim": "Zeynep Kamil",
            "adres": "Istanbul",
            "telefon": "056765434567",
            "bashekimid": 1
        },
        {
            "hid": 2,
            "isim": "Ankara Hastanesi",
            "adres": "Ankara",
            "telefon": "345678987658",
            "bashekimid": 2
        },
        {
            "hid": 3,
            "isim": "Baskent Hastanesi",
            "adres": "Ankara",
            "telefon": "567898765697",
            "bashekimid": 3
        }
    ]
})
http://extjsinaction.com/dataQuery.php?callback=callbackFunction

您的回答应该是这样的:

callbackFunction({
    "records": [
        {
            "hid": 1,
            "isim": "Zeynep Kamil",
            "adres": "Istanbul",
            "telefon": "056765434567",
            "bashekimid": 1
        },
        {
            "hid": 2,
            "isim": "Ankara Hastanesi",
            "adres": "Ankara",
            "telefon": "345678987658",
            "bashekimid": 2
        },
        {
            "hid": 3,
            "isim": "Baskent Hastanesi",
            "adres": "Ankara",
            "telefon": "567898765697",
            "bashekimid": 3
        }
    ]
})
如果你需要更多关于JSONP的信息,谷歌是你的朋友


一些好的

我在jsonlint.com上验证了JSON,它是有效的。但是有一些错误我找不到。你如何在客户端获取JSON?@limelights我已经添加了我的网格代码检查EXtJs的文档。网格支持的JSON数据结构是什么。
callbackFunction({
    "records": [
        {
            "hid": 1,
            "isim": "Zeynep Kamil",
            "adres": "Istanbul",
            "telefon": "056765434567",
            "bashekimid": 1
        },
        {
            "hid": 2,
            "isim": "Ankara Hastanesi",
            "adres": "Ankara",
            "telefon": "345678987658",
            "bashekimid": 2
        },
        {
            "hid": 3,
            "isim": "Baskent Hastanesi",
            "adres": "Ankara",
            "telefon": "567898765697",
            "bashekimid": 3
        }
    ]
})