`
韩悠悠
  • 浏览: 839625 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

常用Reader之JsonReader

    博客分类:
  • web
阅读更多

在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,而其他字段都不变。

分享到:
评论

相关推荐

    C#.Net2.0解析Json,精简版的Newtonsoft.Json.dll,JsonReader,JsonSerializer(Json.Net)

    JsonReader reader = new JsonReader(new StringReader(jsonText)); JsonSerializer ser = new JsonSerializer(); var obj = ser.Deserialize(reader, typeof(List)); List<NewsInfo> newsList = obj as List;

    Json解析工具

    JsonReader reader = new JsonReader(new InputStreamReader(input)); reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("name")) { String value = reader....

    ExtJs实现数据加载和提交经典代码

    `JsonReader`是一种常用的`reader`类型,它可以将服务器返回的JSON数据转换为可操作的对象。配置`JsonReader`时,需要指定以下几点: - **root**:表示数组数据的字段名。 - **totalProperty**:表示总数的字段名。...

    gson最新源码

    1. **JsonReader与JsonWriter**: `READER_SHORT.json` 和 `READER_LONG.json` 可能是示例数据,用于演示如何使用JsonReader进行JSON解析。JsonReader提供了一种流式API来读取JSON数据,而JsonWriter则用于生成JSON...

    dotnet 使用 Newtonsoft.Json 输出枚举首字符小写.rar

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.String) { string enumText = reader.Value....

    EXT与数据库交互的事例

    EXT与数据库交互,主要是通过AJAX(Asynchronous JavaScript and XML)技术来实现的,尽管在实际应用中XML可能不再是最常用的交换数据格式,现在更多的是JSON。 EXT中的AJAX交互通常涉及到以下几个关键知识点: 1....

    json基础文档

    - **概念介绍**: `JsonObject`是JSON中最基本的数据结构之一,它允许我们以键值对的形式存储数据。在Java中,我们可以利用第三方库如Gson或Jackson来方便地创建和操作`JsonObject`。 - **示例代码**: ```java ...

    ExtJs grid多选时获取选中的所有值

    其中,Grid Panel(简称 Grid)是ExtJs中最常用的一个组件之一,用于展示表格数据。在实际业务场景中,经常需要支持用户对表格中的多行数据进行选择,并执行批量操作,如删除、编辑等。因此,掌握如何在ExtJs Grid中...

    C#json与Xml相互转换例子

    public override XDocument Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return XDocument.Parse(reader.GetString()); } public override void Write(Utf8...

    EXTJS分页全面分析

    var reader = new Ext.data.JsonReader({ totalProperty: 'totalProperty', root: 'root' }, record); ``` 其中`totalProperty`表示总记录数的属性名,`root`表示数据列表的根节点名称。 ##### 4. 创建存储器(`...

    ext_ext_knew7pi_ajax_

    reader: new Ext.data.JsonReader({ root: 'menus', idProperty: 'id' }), fields: ['id', 'text'] }); var menu = new Ext.menu.Menu({ items: [{ text: 'Loading...', disabled: true }], store: ...

    Ext与后台数据库交互

    通常情况下,我们会根据返回数据的格式选择合适的读取器,比如对于JSON格式的数据,可以使用`JsonReader`。 Store还支持内联数据,即可以通过配置`data`选项直接定义数据,这在某些情况下非常方便。例如: ```...

    ext实现动态树

    reader: new Ext.data.JsonReader({ totalProperty: "totalProperty", root: "root", fields: [ { name: "id" }, { name: "filename" }, { name: "url" }, { name: "parentId" } ] }) }); ``` 这里定义了...

    ExtJS设计模式

    reader: new Ext.data.JsonReader() }); ``` #### 其他设计模式的应用 除了上述提到的设计模式外,ExtJS还利用了其他多种设计模式来增强其功能性和可维护性: - **Singleton单例模式**:确保某个类只有一个实例...

    Ext + dwr 实现分页功能

    reader: new Ext.data.JsonReader({ totalProperty: 'totalProperty', root: 'root' }) }); var grid = new Ext.grid.GridPanel({ store: store, columns: [ {header: 'Name', dataIndex: 'name', width: ...

    Ext深入浅出 数据传输

    10.6 常用Reader...........................................241 10.6.1 ArrayReader.........................241 10.6.2 JsonReader ...........................242 10.6.3 XmlReader.............................

    Ext中Ajax的应用

    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解析方式详解

    本篇文章将详细介绍四种在Java中常用的JSON解析方式,每种方式都通过示例代码来展示,以帮助开发者更好地理解和应用这些技术。 1. JSON官方解析 JSON官方解析指的是Java平台上标准的JSON解析库,即javax.json API...

Global site tag (gtag.js) - Google Analytics