json - 使用 JSON 路径跳过双引号
问题描述
我有以下 JSON
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
和$.phoneNumbers[:1].type
json 路径来提取电话号码类型iPhone
值,但输出是
[
"iPhone"
]
我想把它作为简单的字符串,比如iPhone
. 如何创建 JSON 路径以去除双引号"
和[
?
解决方案
By default, using JsonPath
to process JSON means you will get the result as a JSONArray
. So, you have to make one more step to get the desired result.
For example,
@Test
public void test() {
String json = "{\n" +
" \"firstName\": \"John\",\n" +
" \"lastName\" : \"doe\",\n" +
" \"age\" : 26,\n" +
" \"address\" : {\n" +
" \"streetAddress\": \"naist street\",\n" +
" \"city\" : \"Nara\",\n" +
" \"postalCode\" : \"630-0192\"\n" +
" },\n" +
" \"phoneNumbers\": [\n" +
" {\n" +
" \"type\" : \"iPhone\",\n" +
" \"number\": \"0123-4567-8888\"\n" +
" },\n" +
" {\n" +
" \"type\" : \"home\",\n" +
" \"number\": \"0123-4567-8910\"\n" +
" }\n" +
" ]\n" +
"}";
net.minidev.json.JSONArray iPhone = JsonPath.parse(json).read("$.phoneNumbers[?(@.type=='iPhone')].type");
System.out.println("Type : " + iPhone.get(0).toString());
}
, will eventually print Type : iPhone
推荐阅读
- javascript - Django - 查询集索引而不是循环
- python - 从嵌套列表创建嵌套字典
- python - PyTorch 中的 .flatten() 和 .view(-1) 有什么区别?
- javascript - 仅在刷新页面后获取令牌。刷新前token返回null
- javascript - OSX .dmg 和 PC 安装程序 .exe 之间的大小差异?
- python - 生成一个列表来存储输入数据
- azure - 脚本如何访问服务连接?(Azure Devops 管道)
- go - 在 GORM 中使用关联创建记录?
- jquery - jQuery DataTable Search / Filter FAILS on column function generated value
- java - 在命令行参数中为字符获取不同的输出