Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅获取JSON对象的ID列表?_Java_Json_Rest - Fatal编程技术网

Java 如何仅获取JSON对象的ID列表?

Java 如何仅获取JSON对象的ID列表?,java,json,rest,Java,Json,Rest,我有一些问题。我从我的RESTful Web服务得到一个响应,列表中有JSON对象。例如: 我得到了这些元素的列表,我只想从benutzerId中得到id [{ "benutzerId": { "benutzername": "Nenzema", "geschlecht": "m", "id": 1, "nachname": "Marinovic", "passwort": "test1", "vorname": "Ne

我有一些问题。我从我的RESTful Web服务得到一个响应,列表中有JSON对象。例如:

我得到了这些元素的列表,我只想从benutzerId中得到id

[{
  "benutzerId": {
      "benutzername": "Nenzema",
      "geschlecht": "m",
      "id": 1,
      "nachname": "Marinovic",
      "passwort": "test1",
      "vorname": "Nenad"
    },
    "hochzeitId": {
      "id": 4
    },
    "id": 1,
    "isbrautbenutzer": true
  }, {
    "benutzerId": {
      "benutzername": "dnikolic",
      "geschlecht": "m",
      "id": 2,
      "nachname": "Nikolic",
      "passwort": "test2",
      "vorname": "Djordje"
    },
    "hochzeitId": {
      "id": 4
    },
    "id": 4,
    "isbrautbenutzer": false
  }]
我已经做了,只是为了得到benutzer,但是我不知道如何返回一个json对象,其中只有id在这个对象中,因为我不想将整个数据发送给请求者

[{
  "benutzername": "Nenzema",
  "geschlecht": "m",
  "id": 1,
  "nachname": "Marinovic",
  "passwort": "test1",
  "vorname": "Nenad"
}, {
  "benutzername": "dnikolic",
  "geschlecht": "m",
  "id": 2,
  "nachname": "Nikolic",
  "passwort": "test2",
  "vorname": "Djordje"
}]
所以我的目标是得到这样的东西:

[{
  "id": 1
}, {
"id": 2
}]
这是对第一个列表的查询:

@NamedQuery(name = "Hochzeitsplan.findByBenutzerId", 
query = "SELECT h FROM Hochzeitsplan h WHERE h.benutzerId.id = :benutzerId"),
我也测试了这两个查询,但不起作用

@NamedQuery(name = "Hochzeitsplan.getHochzeitsuserByHochzeitsId",
query = "SELECT DISTINCT h.benutzerId FROM Hochzeitsplan h WHERE h.hochzeitId.id = :hochzeitId"),

@NamedQuery(name = "Hochzeitsplan.findBenutzerIdByHochzeitsId", 
query = "SELECT h.benutzerId.id FROM Hochzeitsplan h WHERE h.hochzeitId.id = :hochzeitId"),
这是我用于获取列表响应的方法:

@GET
@Path("/hochzeitIDneu={hochzeitId}")
@Produces({MediaType.APPLICATION_JSON})
public Response getListByHochzeitID(@PathParam("hochzeitId") Integer hochzeitId) {
    Query query=em.createNamedQuery("Hochzeitsplan.findByHochzeitId",Hochzeitsplan.class)
                  .setParameter("hochzeitId", hochzeitId);
    List<Hochzeitsplan> a =query.getResultList();

    a.sort(new Comparator<Hochzeitsplan>() {
        @Override
        public int compare(Hochzeitsplan o1, Hochzeitsplan o2) 
        {
            return o1.getId().compareTo(o2.getId());
        }
    });

    if(a.isEmpty()) {
       ErrorManager error1 = new ErrorManager();
       return Response.status(400).entity(error1.getError(Enums.ErrorResponses.NORESULTS)).build();
    } else {
       return Response.ok(a.toArray(new Hochzeitsplan[a.size()])).build();
    }
}
@GET
@路径(“/hochzeitIDneu={hochzeitId}”)
@产生({MediaType.APPLICATION_JSON})
公共响应getListByHochzeitID(@PathParam(“hochzeitId”)整数hochzeitId){
Query Query=em.createNamedQuery(“Hochzeitsplan.findByHochzeitId”,Hochzeitsplan.class)
.setParameter(“hochzeitId”,hochzeitId);
List a=query.getResultList();
a、 排序(新比较器(){
@凌驾
公共int比较(HOCHZEITS计划o1、HOCHZEITS计划o2)
{
返回o1.getId().compareTo(o2.getId());
}
});
如果(a.isEmpty()){
ErrorManager error1=新的ErrorManager();
返回Response.status(400).entity(error1.getError(Enums.ErrorResponses.NORESULTS)).build();
}否则{
返回Response.ok(a.toArray(新的Hochzeitsplan[a.size()])).build();
}
}

使用像Jayway JsonPath这样的JsonPath计算器。

您的json路径可以是这样的

$[*]['benutzerId'].id
这将产生如下输出 [ 1. 2. ]


你可以在线尝试这个

使用像Jayway JsonPath这样的JsonPath计算器。

您的json路径可以是这样的

$[*]['benutzerId'].id
这将产生如下输出 [ 1. 2. ]


你可以在线试试这个

谢谢你的回答,我必须把这个放到select语句的查询中吗?选择$[*]['benutzerId'].id从?谢谢你的回答,我必须把它放在select语句的查询中吗?选择$[*]['benutzerId'].id从?