• java/json 生成和解析数据的两种编程模型


    简介:

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

    语法:

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

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

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

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

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

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

    参考:

    https://javaee.github.io/tutorial/jsonp001.html

    https://baike.baidu.com/item/JSON/2462549?fr=aladdin

  • 相关阅读:
    MFC project for a non-Unicode character set is deprecated
    关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
    字符串比较自实现
    各种语言里获取当前模块的方法:ABAP,ABSL,C,nodejs
    SAP CRM product attachment的document template功能
    ABAP, UI5和webpack的处理入口
    ABAP, Maven, CF App和Webpack的build
    json格式的字符串序列化和反序列化的一些高级用法
    SAP ABAP Netweaver容器化, 不可能完成的任务吗?
    UI Component in CRM WebUI and Hybris
  • 原文地址:https://www.cnblogs.com/lijianxuan/p/10643013.html
Copyright © 2020-2023  润新知