在java中表示json_在Java中解析JSON而不知道JSON格式
我试图解析在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格式相关推荐
- spark中读取json_【Spark】使用DataFrame读取复杂JSON中的嵌套数组
众所周知,在早期Spark版本中就已经支持读取Json格式的数据文件,并能够直接转换为数据库表,以方便我们进行处理数据,在本篇文章中我们将介绍如何通过Spark API很简单地读取Json数据,并进一 ...
- java+解析未知json_在Java中解析JSON时如何忽略未知属性– Jackson @JsonIgnoreProperties注释示例...
java+解析未知json 使用Jackson API在Java中解析JSON时的常见问题之一是,当您的JSON包含未知属性(即您的Java类没有对应于所有JSON属性的所有字段)时,该操作将失败. ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- 使用java中replaceAll方法替换字符串中的反斜杠
今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...
- java基于http协议编程_Java中基于HTTP协议网络编程
java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来访问Web服务功能,这篇博客,就跟大家分享一下,Java中的网络编程的知识,主要是学习下该java.net包下的API. U ...
- ubuntu chrome java插件_在Ubuntu中为Chrome安装Java插件
问题描述 我有JDK,在Ubuntu中一切正常,我是说IDE,一些应用程序,我能够开发和运行项目,但是我在Chrome中收到一条消息:Java(TM) is required to display t ...
- java中collection方法_Java 8中的Collector toCollection()方法
toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...
- java中的action_浅析java中action的作用
正如早先指出的那样,action()并不是我们对所有事进行分类后自动为handleEvent()调用的唯一方法.有三个其它的被调用的方法集,如果我们想捕捉某些类型的事件(键盘.鼠标和焦点事件),因此我 ...
- java中注解的使用_java中注解的使用
使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...
最新文章
- Centos安装GD库
- linux efi启动,可启动USB Linux的EFI/ UEFI
- 《系统分析与设计方法》 计算投资回收分析
- 《Asp.Net 2.0 揭秘》读书笔记(一)
- ubuntu10.04 解决打开windows记事本.txt文件乱码的方法
- ExtJS4.1.1 设置表格背景颜色 修改文本颜色 在表格中插入图片
- 10.15 lzxkj
- C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
- arcgis 将栅格值提取到点_ArcGIS教程:值提取至点 (空间分析)
- DockPanel的使用
- 杜克大学用13幅图告诉你人生的真谛,值得深思!
- OpenStack还是OpenStack,云已不是那朵云!
- hp M1530一体机无法在OEM系统下安装驱动
- 目标检测网络 -- FasterRCNN
- 毕设系统之网上订餐管理系统
- 指导CoVaR,基于Copula、GARCH、DCC、分位数回归、藤VineCopula
- IDEA 打开窗口切换的快捷键
- 大学英语六级考试分数分布
- openbsd停止mysql_英特尔处理器超线程功能被OpenBSD 停用,并爆bug
- jq输出html 单引号引号转义符,jQuery.parseJSON由于JSON中的单引号转义而引发“无效JSON”错误...
热门文章
- linux 搭建dns
- Fatal error: connect ECONNREFUSED Fatal error: socket hang up
- C语言实现radon变换
- 图解使用Win8Api进行Metro风格的程序开发十一----联系人选择
- linux编程技术进程代码,Linux进程通信—信号量 代码实现
- python的threading安装不了_python – 我无法安装Gevent
- 两个有序链表排序C语言,K个有序链表的归并排序(C语言)
- 2019年安徽省模块七满分多少_二级造价考情分析:20年二级造价考试还有戏吗?...
- python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
- 微信电脑客户端登陆_电脑端微信多开教程,多个微信同时登陆,工作生活两不误...