在后台我有两个类:
[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呢?
兄弟,看好咯, 你的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]
测试通过了