我试图解析在Java中的JSON字符串,并找到键值对,使我可以确定JSON对象的近似结构,因为JSON字符串的对象结构是未知的。

例如,一个执行可能有一个JSON字符串,如下所示:

{"id" : 12345, "days" : [ "Monday", "Wednesday" ], "person" : { "firstName" : "David", "lastName" : "Menoyo" } }

和另一个这样:

{"url" : "http://someurl.com", "method" : "POST", "isauth" : false }

我将如何循环遍历各种JSON元素并确定键及其值?我看着jackson-core的JsonParser.我看到我可以抓住下一个“令牌”,并确定它是什么类型的令牌(即字段名称,值,数组开始,等),但是,我不知道如何获取实际令牌的值。

例如:

public void parse(String json) {

try {

JsonFactory f = new JsonFactory();

JsonParser parser = f.createParser(json);

JsonToken token = parser.nextToken();

while (token != null) {

if (token.equals(JsonToken.START_ARRAY)) {

logger.debug("Start Array : " + token.toString());

} else if (token.equals(JsonToken.END_ARRAY)) {

logger.debug("End Array : " + token.toString());

} else if (token.equals(JsonToken.START_OBJECT)) {

logger.debug("Start Object : " + token.toString());

} else if (token.equals(JsonToken.END_OBJECT)) {

logger.debug("End Object : " + token.toString());

} else if (token.equals(JsonToken.FIELD_NAME)) {

logger.debug("Field Name : " + token.toString());

} else if (token.equals(JsonToken.VALUE_FALSE)) {

logger.debug("Value False : " + token.toString());

} else if (token.equals(JsonToken.VALUE_NULL)) {

logger.debug("Value Null : " + token.toString());

} else if (token.equals(JsonToken.VALUE_NUMBER_FLOAT)) {

logger.debug("Value Number Float : " + token.toString());

} else if (token.equals(JsonToken.VALUE_NUMBER_INT)) {

logger.debug("Value Number Int : " + token.toString());

} else if (token.equals(JsonToken.VALUE_STRING)) {

logger.debug("Value String : " + token.toString());

} else if (token.equals(JsonToken.VALUE_TRUE)) {

logger.debug("Value True : " + token.toString());

} else {

logger.debug("Something else : " + token.toString());

}

token = parser.nextToken();

}

} catch (Exception e) {

logger.error("", e);

}

}

有一个类在杰克逊或一些其他库(gson或简单json)产生一个树,或允许一个循环通过json元素,获得实际的键名称除了值?

在java中表示json_在Java中解析JSON而不知道JSON格式相关推荐

  1. spark中读取json_【Spark】使用DataFrame读取复杂JSON中的嵌套数组

    众所周知,在早期Spark版本中就已经支持读取Json格式的数据文件,并能够直接转换为数据库表,以方便我们进行处理数据,在本篇文章中我们将介绍如何通过Spark API很简单地读取Json数据,并进一 ...

  2. java+解析未知json_在Java中解析JSON时如何忽略未知属性– Jackson @JsonIgnoreProperties注释示例...

    java+解析未知json 使用Jackson API在Java中解析JSON时的常见问题之一是,当您的JSON包含未知属性(即您的Java类没有对应于所有JSON属性的所有字段)时,该操作将失败. ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  5. java基于http协议编程_Java中基于HTTP协议网络编程

    java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来访问Web服务功能,这篇博客,就跟大家分享一下,Java中的网络编程的知识,主要是学习下该java.net包下的API. U ...

  6. ubuntu chrome java插件_在Ubuntu中为Chrome安装Java插件

    问题描述 我有JDK,在Ubuntu中一切正常,我是说IDE,一些应用程序,我能够开发和运行项目,但是我在Chrome中收到一条消息:Java(TM) is required to display t ...

  7. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  8. java中的action_浅析java中action的作用

    正如早先指出的那样,action()并不是我们对所有事进行分类后自动为handleEvent()调用的唯一方法.有三个其它的被调用的方法集,如果我们想捕捉某些类型的事件(键盘.鼠标和焦点事件),因此我 ...

  9. java中注解的使用_java中注解的使用

    使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...

最新文章

  1. Centos安装GD库
  2. linux efi启动,可启动USB Linux的EFI/ UEFI
  3. 《系统分析与设计方法》 计算投资回收分析
  4. 《Asp.Net 2.0 揭秘》读书笔记(一)
  5. ubuntu10.04 解决打开windows记事本.txt文件乱码的方法
  6. ExtJS4.1.1 设置表格背景颜色 修改文本颜色 在表格中插入图片
  7. 10.15 lzxkj
  8. C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
  9. arcgis 将栅格值提取到点_ArcGIS教程:值提取至点 (空间分析)
  10. DockPanel的使用
  11. 杜克大学用13幅图告诉你人生的真谛,值得深思!
  12. OpenStack还是OpenStack,云已不是那朵云!
  13. hp M1530一体机无法在OEM系统下安装驱动
  14. 目标检测网络 -- FasterRCNN
  15. 毕设系统之网上订餐管理系统
  16. 指导CoVaR,基于Copula、GARCH、DCC、分位数回归、藤VineCopula
  17. IDEA 打开窗口切换的快捷键
  18. 大学英语六级考试分数分布
  19. openbsd停止mysql_英特尔处理器超线程功能被OpenBSD 停用,并爆bug
  20. jq输出html 单引号引号转义符,jQuery.parseJSON由于JSON中的单引号转义而引发“无效JSON”错误...

热门文章

  1. linux 搭建dns
  2. Fatal error: connect ECONNREFUSED Fatal error: socket hang up
  3. C语言实现radon变换
  4. 图解使用Win8Api进行Metro风格的程序开发十一----联系人选择
  5. linux编程技术进程代码,Linux进程通信—信号量 代码实现
  6. python的threading安装不了_python – 我无法安装Gevent
  7. 两个有序链表排序C语言,K个有序链表的归并排序(C语言)
  8. 2019年安徽省模块七满分多少_二级造价考情分析:20年二级造价考试还有戏吗?...
  9. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
  10. 微信电脑客户端登陆_电脑端微信多开教程,多个微信同时登陆,工作生活两不误...