zoukankan      html  css  js  c++  java
  • java/json 生成和解析数据的两种编程模型

     

    JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

    在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
    • 对象表示为键值对
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组

    为了生成和解析JSON数据,有两种编程模型,类似于用于XML文档的编程模型。

    • 对象模型创建一个表示内存中JSON数据的树。然后可以导航,分析或修改树。这种方法最灵活,允许进行需要访问树的完整内容的处理。但是,它通常比流模型慢,需要更多内存。对象模型通过一次导航整个树来生成JSON输出。

    • 流模型使用基于事件的解析器,一次读取一个元素的JSON数据。当对象或数组开始或结束,找到键或找到值时,解析器生成事件并停止处理。应用程序代码可以处理或丢弃每个元素,然后解析器继续执行下一个事件。这种方法适用于本地处理,其中元素的处理不需要来自其余数据的信息。流模型通过一次使用一个元素进行函数调用来生成给定流的JSON输出。

    对象模型:在内存中创建一个映射json数据的树,这种方式是将数据全部存在内存中,随时通过递归查找的方式,来遍历数据树的每一个节点,来导航整个树生成和解析json数据。这种方式因为树的多节点性变得很灵活,但要遍历整棵树,或者每次都要递归来查找,速度慢。

    流模型:流模型基于事件解析器,一次只读取一个元素的json数据。当有数据时解析器找到值或者键并生成事件,然后处理事件,随后继续解析器执行下一个事件,如此重复知道数据处理结束。这种方法消耗内存少,读取后处理释放,不占用过多内存;并且一次使用一个元素进行函数调用来生成给定流的JSON输出速度相对快。

  • 相关阅读:
    目录(文章整理列表)
    WF工作流的一个完整例子
    WF的权限与角色(3)一个简单的权限体系结构
    工作流:工人为你工作7天,回报为一根金条...
    由一个WF项目说起
    软件是什么
    好久没发胡说八道的贴了,今天发一贴
    关于[资料(2).rar]的说明
    倒霉的3天
    DependencyProperty事件
  • 原文地址:https://www.cnblogs.com/wdyaoyao/p/10763365.html
Copyright © 2011-2022 走看看