Json传递后台数据的问题

在后台我有两个类:
[code="java"]public Class Person {
private String name;
private Address address;//一个自定义的类
//getter和setter方法省略
}

public Class Address {
private String road;
//getter和setter方法省略
}
[/code]
逻辑类:
[code="java"]@Controller
public class PersonController {

@Autowired
private PersonService personService;

@RequestMapping(value = "getPersons.htm", method = RequestMethod.GET)
public ModelAndView view() {
    System.out.println("success");
    List<Person> persons = personService.getPersons();//自定义的方法
    Map<String, Object> modelMap = new HashMap<String, Object>();
    modelMap.put("persons", persons);
    return new ModelAndView(modelMap);
}

}[/code]
我在js看到获取到的json数据是这样的:
[code="java"]{"persons":[{"address":{"road":"商业街"},"name":"小明"},{"address":{"road":"莲花街"},"name":"小红"}]}[/code]
前台代码:
[code="java"]Ext.onReady(function() {

        var store = new Ext.data.Store({
                    proxy : new Ext.data.HttpProxy({
                                url : 'getPersons.htm'
                            }),
                    reader : new Ext.data.JsonReader({
                                root : 'books'
                            }, [{
                                        name : 'name'
                                    }, {
                                        name : 'address'
                                    }])
                });

        var persons = new Ext.grid.GridPanel({
                    store : store,
                    cm : new Ext.grid.ColumnModel({
                                defaults : {
                                    sortable : true,
                                    width : 200
                                },
                                columns : [{
                                            header : "name",
                                            dataIndex : 'name'
                                        }, {
                                            header : "address",
                                            dataIndex : 'address'
                                        }]
                            }),
                    width : 430,
                    height : 270,
                    title : 'Test',
                    renderTo : 'persons'
                });

        store.load();
    });[/code]

在前台我要怎样获取json的数据才可以显示出来person中的address呢?

1个回答

兄弟,看好咯, 你的json有问题,请不要使用第三方解析包。

先指出你从后台返回到前台的json有问题,缺少[]

测试代码给你看一下
[code="js"]
var str = '[{"persons":[{"address":{"road":"商业街"},"name":"小明"},{"address":{"road":"莲花街"},"name":"小红"}]}]';
str = eval(str);
for(var i=0;i<str.length;i++){
var strpersons= str[i].persons;
for(var j=0;j<strpersons.length;j++){
alert(strpersons[j].name);
alert(strpersons[j].address.road);
}
}
[/code]

测试通过了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!