`
iunknown
  • 浏览: 409258 次
社区版块
存档分类
最新评论

用 state pattern 简化 json 解释器的实现

阅读更多
之前用 state pattern 实现过 xml 的解释器(spxml),现在用同样的思路来试试实现 json 的解释器。 state pattern 用于这两个解释器的实现的确非常合适,可以有效地降低代码的复杂度。

http://json.org 上有 json 完整的语法图,看起来非常简单。
在做调研的时候,发现 json 已经成为一个 rfc 了
http://www.ietf.org/rfc/rfc4627.txt

实现的结果是又在 googlecode 上增加了一个项目
http://code.google.com/p/spjson/
http://spjson.googlecode.com/files/spjson-0.1.src.tar.gz

基于 state pattern ,可以非常方便地实现 stream-oriented 的解释器。目前实现了基于 pull 和 dom 的两种 json 解释器。底层是 pull 模型,dom 模型是基于 pull 来实现的。dom 模型解释的结果是一颗树,为这个树实现了序列化到字节流的功能和 iterator 。

在 xml 中有 xpath ,json 也有人提出了 jpath 的概念。看了一些实现,从代码量来说,非常复杂。下一步看看有没有可能实现 jpath 的功能。

在 rfc4627 中也定义了 json 和 charset encoding 的关系。这个目前也还没实现。
分享到:
评论

相关推荐

    基于state pattern实现的xml解释器

    在这个案例中,“基于state pattern实现的xml解释器”指的是一个XML解析器,该解析器在解析XML文档的过程中,根据不同的解析状态(如开始标签、结束标签、文本节点等)执行相应的操作,从而实现灵活且可扩展的解析...

    状态模式 State Pattern

    ### 状态模式(State Pattern) #### 概念与定义 状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,使对象看起来像是修改了它的类。该模式通过引入一个代表各种状态的类以及一个行为随着这些...

    设计模式之状态模式(State Pattern)

    我们可以为每个状态创建一个具体状态类,如`PendingState`、`PaidState`、`ShippedState`和`CompletedState`,它们分别实现订单在这些状态下的行为。订单类(Context)则持有当前状态对象,并通过调用状态对象的方法...

    Head First 设计模式 (十) 状态模式(State pattern) C++实现

    接下来,为每种具体状态创建一个类,这些类都继承自`State`接口,并实现各自的行为。例如,我们可以有`OpenState`、`ClosedState`和`LockedState`等。 ```cpp class OpenState : public State { public: void ...

    json2.js 亲测可用

    在实际项目中,如果你需要在旧版本浏览器上使用JSON,或者需要处理可能存在的循环引用,将这四个文件引入到你的项目中,就可以获得完整的JSON操作能力。通过"亲测可用"的描述,我们可以确认这个解决方案在实际使用中...

    JackChan1999#Java-Degisn-Patterns#状态模式-State Pattern1

    状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互

    json文件是什么+为什么使用json文件+如何使用json文件

    JSON 文件是什么?为什么使用 JSON 文件?如何使用 JSON 文件? JSON 文件是什么? JSON(JavaScript ...了解 JSON 文件的基本语法规则和优点,可以帮助开发者更好地使用 JSON 文件,实现高效的数据交换和共享。

    StatePattern.unitypackage

    StatePattern.unitypackage是一个unity演示的状态模式。有需要的同学可以自行下载。

    Json Js 文件包下载 josn2.js、json.js、 json_parse.js、json_parse_state.js、cycle.js

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言(包括JavaScript)的习惯,这使得它对人类来说易于阅读和编写,同时也易于机器解析和...

    stateflow 计时器

    基于simulink的计时器,方便学习stateflow,Stateflow是一个跟Simulink联合起来使用的,可视化图形界面工具。在Simulink环境下,它是用来模拟和控制一些逻辑系统. Stateflow跟Simulink是完美结合在一起的,可以建模...

    State Machine Java Pattern

    ### 关于“State Machine Java Pattern”的深入探讨 #### 摘要 本文介绍了一种新的面向对象设计模式——状态机设计模式(State Machine Design Pattern)。该模式扩展了状态设计模式的功能,使对象能够根据其内部...

    stateflow实现的计数器

    stateflow实现的计数器,与matlab自带的实例有些区别

    Linux JSON 常用解析命令总结

    它基于`json-c`库实现,因此在编译`jsonfilter`时会依赖于`json-c`。以下是`jsonfilter`的主要选项及用法: - `-i <file>`:指定输入的JSON文件路径。注意,该选项与`-s`选项不能同时使用。 - `-s <string>`:直接...

    《设计模式》实战---状态模式(State Pattern)

    在《设计模式》实战---状态模式(State Pattern)这篇文章中,作者可能详细探讨了以下关键点: 1. **模式定义**:状态模式允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。这通过将每个状态封装...

    Java实现后台发送及接收json数据的方法示例

    同时,也可以使用诸如`OkHttp`或`Apache HttpClient`这样的库来简化网络请求的处理,它们提供了更高级的功能,如异步请求、拦截器等。 总的来说,Java实现后台发送和接收JSON数据涉及的主要知识点包括: 1. JSON...

    json2 json

    使用thisfile recommended.json_parse.js:该文件包含替代JSON的parse函数thatuses递归下降而不是eval.json_parse_state.js:此文件包含替代JSON的parse函数thatuses状态机器代替eval.cycle.js:这个文件包含了两个...

    状态模式(State Pattern)是一种行为设计模式

    状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式将一个对象的行为分解为各个独立的状态,并且每个状态都封装在自己的类中,使得对象在...

    json4s-scalaz_2.11-3.2.9.zip

    5. 示例和测试代码:展示如何使用JSON4S和Scalaz进行实际操作。 在处理这个压缩包时,开发者通常会解压后导入项目到IDE,例如IntelliJ IDEA或Eclipse,然后通过SBT(Scala构建工具)管理依赖并运行测试,确保一切...

    JSON2.JS JSON.JS JSON_PARSE.JS

    json2.js: This file creates a JSON property in the global object, if there isn't already one, setting its value to an object containing a stringify method and a parse method. The parse method uses ...

    json使用js文件

    json2.js,可用于json格式序列化和反序列化 包括:json2.js json_parse.js json_parse_state.js jsonzip.js cycle.js

Global site tag (gtag.js) - Google Analytics