我的示例JSON输入如下所示:
"JobName":"Test Job 1",
"events":[
{ "features":[],
"InputHiveTable":"uilog_uiclientlogdata",
"eventColumn":"command",
"name":"edu.apollogrp.classroom.discussion.client.events.CreateDiscussionEvent"
},
考虑字段"InputHiveTable"
,它可以是全大写的INPUTHIVETABLE
,全小写的inputhivetable
,或者像现在这样两者混合。
目前,我阅读的字段如下所示(在Java中):
JSONObject jsonObject = (JSONObject) obj;
JSONArray events = (JSONArray) jsonObject.get("events");
String InputHiveTable = (String)event.get("InputHiveTable");
因此,我的问题是如何在忽略大小写的情况下搜索字段"InputHiveTable"
。
4条答案
按热度按时间im9ewurl1#
如果您必须多次执行这种不区分大小写的查找,我只需要编写一个方法来执行该查找:
swvgeqrz2#
你可以将JSONObject读入一个java字符串,然后调用String.toLowerCase并将其存储回JSONObject.这会将字符串的大小写全部转换为小写,所以你必须在逻辑的其他地方考虑到这一点.之后,你只需要对“inputhivetable”执行get调用.
这绝不是一个很好的解决方案,但是如果您绝对没有其他方法来处理作为JSON输入返回的内容,这是一个潜在的解决方案。
5f0d552i3#
考虑到可以使用TreeMap实现大小写不敏感(即通过
String.CASE_INSENSITIVE_ORDER
比较器),您可能可以执行以下操作:1.实现您自己的
MyJSONObject
扩展TreeMap
,其中它的方法将只调用JSONObject
的静态方法,使用与JSONObject
相同的签名和所有必需的接口。1.实现
ContainerFactory
接口,其中createObjectContainer
将返回MyJSONObject
的新示例(并且createArrayContainer
将仅返回新的JSONArray
)。1.要使用新容器
MyContainerFactory
运行它:flmtquvp4#
示例Json:“数据”:{“信息”:{“身份证”:“64”。“关系”:“当前”,} }
在java模型中:
@JsonbProperty为我工作