简单json解析器(Java)

简单json解析器(Java)_第1张图片
图片发自App


simple json parser.

代码查看:

json解析代码



package data.json;

public enum JsonTokenType {

STRING,

NUMBER,

LEFTBRACKET,   //[

RIGHTBRACKET,

LEFTbrace,   // {

RIGHTbrace,

EOF,

COMMA,

COLON;//:

}


package data.json;

public class Token {

JsonTokenType type;

String value;

public Token(JsonTokenType type, String value) {

this.type = type;

this.value = value;

}

public Token(JsonTokenType type, char c) {

this.type = type;

this.value = c+"";

}

public String toString() {

return String.format("Token({%s}, {%s})", type, value);

}

}


 这是最基本的词法的类。词法分析和语法分析的代码又丑又长(可能是因为用Java的基本类型写的,没有借助高级的工具类的缘故),没有贴出来,可以去网站查看。都利用递归下降法(llk),最后生成数据结构。

   要理解这些代码必须明白里面的原理,对编译原理实现有一点了解,然后就懒得写这种代码了。因为很繁琐,必须去操心细节的事情,操碎心。

 也许很多人喜欢写这种代码,理解起来有一定的要求,调试相对困难,仿佛回到开始写小算法时的激动心情。因为大多数日常工作有很多配置,很少一上来写几百行高度逻辑复杂的代码(用很多判断 循环 递归 做类型转换)。如果一旦增加新的功能,设计的不好,改起来会让人很崩溃。

json官网

json官网

    现在不够完整,但基本功能可以实现。做了语法解析,生成Java对象(暂时不是bean,是基本类型和list和map),利用tostring进行输出(强烈推荐看看源码)。后续可以增加xml互转功能。

 目前Java的xml和json解析库真是一团糟,实在可以用错误百出,难以使用来形容。为什么接受正规教育的程序员这么少,这么难找。比较常用的有好几种之多,我见过项目混用Google的,Apache的,ali的解析jar包。

    为什么会如此复杂,这我也不知道。

 json只是之一,不是唯一,且行且珍惜。如果你把世界当成一个钉子,请砸的轻一点。上点年龄的程序员喜欢xml,这里有一篇XML解析想到的。

看看Java自带的简单类型解析器



import java.util.*;

public class Main {

public static void main(String args[]) {       Scanner cin = new Scanner(System.in);

 int a, b;

while (cin.hasNext()) {

                a = cin.nextInt();

                b = cin.nextInt();

                System.out.println(a + b);

}

}

}


  这其实是很多oj的第一道试题答案,Java版的操作std io。作为工具类,提供了必要的方法,来识别基本类型。Java也有工具类来解析Java代码自身,如一些代码检查工具。

  有的知识点在盲区里面,如果新手不接触就会很害怕,觉得很难,无从下手。有经验的熟手会快速入门,高手当然会理解更多的东西。

  各种语言都提供了很多高度可用的工具,让我们专心业务,如果我们不能理解他,起码暂时需要用好它。看看一些优秀的工具实现都引入了更多的其他工具,在追求理解基本思想和功能的时候,做出自己的系统才是重要的。

 我当然是不会用这个解析器去做生产环境的任何事情,这只是玩具版,企业应用需要防弹合金版本。

你可能感兴趣的:(简单json解析器(Java))