在JavaScript中,JSON是一种非常重要的数据格式,key:value的形式比XML那种复杂的标签结构更容易理解,代码量也更小,很多人倾向于使用它作为EXT的数据交换格式。为Json- Reader准备的JSON数据如下面的代码所示。
var data = {
id:0,
totalProperty:2,
successProperty:true,
root:[
{id:'id1',name:'name1',descn:'descn1'},
{id:'id2',name:'name2',descn:'descn2'}
]
};
与数组相比,JSON的最大优点就是支持分页,我们可以使用totalProperty参数表示数据的总量。successProperty参数是可选的,可以用它判断当前请求是否执行成功,进而判断是否进行数据加载。在不希望JsonReader处理响应数据时,可以把successProperty设置成false。
现在来讨论一下JsonReader,看看它是如何与上面的JSON数据对应的,如下面的代码所示。
var reader = new Ext.data.JsonReader({
successProperty: "successproperty",
totalProperty: "totalProperty",
root: "root",
id: "id"
}, [
{name:'id',mapping:'id'},
{name:'name',mapping:'name'},
{name:'descn',mapping:'descn'}
]);
上例中的对应方式不够简洁,因为name和mapping部分的内容是相同的,其实这里的mapping可以省略,默认会用name参数从JSON中获得对应的数据。如果不想与JSON里的名字一样,也可以使用mapping修改。不过,mapping在这里还有其他用途,如代码清单10-3所示。
代码清单 为JsonReader设置mapping进行数据映射
var data = {
id:0,
totalProperty:2,
successProperty:true,
root:[
{id:'id1',name:'name1',descn:'descn1',person:{
id:1,name:'man',sex:'male'
}},
{id:'id2',name:'name2',descn:'descn2',person:{
id:2,name:'woman',sex:'female'
}}
]
};
var reader = new Ext.data.JsonReader({
successProperty: "successproperty",
totalProperty: "totalProperty",
root: "root",
id: "id"
}, [
'id','name','descn',
{name:'person_name',mapping:'person.name'},
{name:'person_sex',mapping:'person.sex'}
]);
在上面的代码中,我们使用JSON支持更复杂的嵌套结构,其中的person对象自身就拥有id、 name和sex等属性。在JsonReader中可以用mapping把这些嵌套的内部属性映射出来,赋予对应的record,而其他字段都不变。
分享到:
相关推荐
JsonReader reader = new JsonReader(new StringReader(jsonText)); JsonSerializer ser = new JsonSerializer(); var obj = ser.Deserialize(reader, typeof(List)); List<NewsInfo> newsList = obj as List;
JsonReader reader = new JsonReader(new InputStreamReader(input)); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("name")) { String value = reader....
`JsonReader`是一种常用的`reader`类型,它可以将服务器返回的JSON数据转换为可操作的对象。配置`JsonReader`时,需要指定以下几点: - **root**:表示数组数据的字段名。 - **totalProperty**:表示总数的字段名。...
1. **JsonReader与JsonWriter**: `READER_SHORT.json` 和 `READER_LONG.json` 可能是示例数据,用于演示如何使用JsonReader进行JSON解析。JsonReader提供了一种流式API来读取JSON数据,而JsonWriter则用于生成JSON...
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.String) { string enumText = reader.Value....
EXT与数据库交互,主要是通过AJAX(Asynchronous JavaScript and XML)技术来实现的,尽管在实际应用中XML可能不再是最常用的交换数据格式,现在更多的是JSON。 EXT中的AJAX交互通常涉及到以下几个关键知识点: 1....
- **概念介绍**: `JsonObject`是JSON中最基本的数据结构之一,它允许我们以键值对的形式存储数据。在Java中,我们可以利用第三方库如Gson或Jackson来方便地创建和操作`JsonObject`。 - **示例代码**: ```java ...
其中,Grid Panel(简称 Grid)是ExtJs中最常用的一个组件之一,用于展示表格数据。在实际业务场景中,经常需要支持用户对表格中的多行数据进行选择,并执行批量操作,如删除、编辑等。因此,掌握如何在ExtJs Grid中...
public override XDocument Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return XDocument.Parse(reader.GetString()); } public override void Write(Utf8...
var reader = new Ext.data.JsonReader({ totalProperty: 'totalProperty', root: 'root' }, record); ``` 其中`totalProperty`表示总记录数的属性名,`root`表示数据列表的根节点名称。 ##### 4. 创建存储器(`...
reader: new Ext.data.JsonReader({ root: 'menus', idProperty: 'id' }), fields: ['id', 'text'] }); var menu = new Ext.menu.Menu({ items: [{ text: 'Loading...', disabled: true }], store: ...
通常情况下,我们会根据返回数据的格式选择合适的读取器,比如对于JSON格式的数据,可以使用`JsonReader`。 Store还支持内联数据,即可以通过配置`data`选项直接定义数据,这在某些情况下非常方便。例如: ```...
reader: new Ext.data.JsonReader({ totalProperty: "totalProperty", root: "root", fields: [ { name: "id" }, { name: "filename" }, { name: "url" }, { name: "parentId" } ] }) }); ``` 这里定义了...
reader: new Ext.data.JsonReader() }); ``` #### 其他设计模式的应用 除了上述提到的设计模式外,ExtJS还利用了其他多种设计模式来增强其功能性和可维护性: - **Singleton单例模式**:确保某个类只有一个实例...
reader: new Ext.data.JsonReader({ totalProperty: 'totalProperty', root: 'root' }) }); var grid = new Ext.grid.GridPanel({ store: store, columns: [ {header: 'Name', dataIndex: 'name', width: ...
10.6 常用Reader...........................................241 10.6.1 ArrayReader.........................241 10.6.2 JsonReader ...........................242 10.6.3 XmlReader.............................
reader: new Ext.data.JsonReader({ totalProperty: 'totalProperty', root: 'root' }, ['id', 'name', 'email']) }); var grid = new Ext.grid.GridPanel({ store: store, columns: [ {header: 'ID', ...
本篇文章将详细介绍四种在Java中常用的JSON解析方式,每种方式都通过示例代码来展示,以帮助开发者更好地理解和应用这些技术。 1. JSON官方解析 JSON官方解析指的是Java平台上标准的JSON解析库,即javax.json API...