Java @每次使用不同数量的JSON值在REST Web服务中使用JSON
我想Java @每次使用不同数量的JSON值在REST Web服务中使用JSON,java,json,rest,jax-rs,Java,Json,Rest,Jax Rs,我想@使用带有JSON类型的REST-webservices,但是JSON输入每次持有不同数量的值 {"name":"x","age":23,"language":"java"} 或 因此,每次输入的JSON都可能不同。如何在REST代码中使用这种类型的JSON?在Java中,您需要一个类来镜像JSON的可能内容 例如: public class Developer { private String name, language, db; private int age;
@使用带有JSON类型的REST-webservices,但是JSON输入每次持有不同数量的值
{"name":"x","age":23,"language":"java"}
或
因此,每次输入的JSON都可能不同。如何在REST代码中使用这种类型的JSON?在Java中,您需要一个类来镜像JSON的可能内容
例如:
public class Developer {
private String name, language, db;
private int age;
// getters and setters
}
如果您的业务逻辑允许使用多种语言和数据库,则可以包括
private Set<String> language, db;
专用集语言,db;
Java中需要一个类来镜像JSON的可能内容,而不是字符串字段。
例如:
public class Developer {
private String name, language, db;
private int age;
// getters and setters
}
如果您的业务逻辑允许使用多种语言和数据库,则可以包括
private Set<String> language, db;
专用集语言,db;
而不是字符串字段。我得到的答案如下:
public Response jsonREST(InputStream incomingData) {
StringBuilder jsonBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while((line = in.readLine()) != null) {
System.out.println("output "+line);
jsonBuilder.append(line);
}
} catch(Exception e) {
System.out.println("Error Parsing: - ");
}
System.out.println("Data Received: " + jsonBuilder.toString());
return Response.status(200).entity(jsonBuilder.toString()).build();
}
谢谢,我需要的是在rest中解析json
比如我不知道key的名称,所以我想解析整个json并对其进行一些操作。我得到了如下答案:
public Response jsonREST(InputStream incomingData) {
StringBuilder jsonBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while((line = in.readLine()) != null) {
System.out.println("output "+line);
jsonBuilder.append(line);
}
} catch(Exception e) {
System.out.println("Error Parsing: - ");
}
System.out.println("Data Received: " + jsonBuilder.toString());
return Response.status(200).entity(jsonBuilder.toString()).build();
}
谢谢,我需要的是在rest中解析json
比如我不知道密钥的名称,所以我想解析整个json并对其执行一些操作。因为您使用的是Jersey,并且所使用的json可能包含任意的键值对,所以您可以在Jersey控制器中尝试以下操作:
@POST
@Path("/json-map")
@Consumes(MediaType.APPLICATION_JSON)
public SomeSortOfResponse receiveArbitraryJsonMap(Map<String,String> map) {
// do stuff with map of key-value pairs
}
@POST
@路径(“/json映射”)
@使用(MediaType.APPLICATION_JSON)
公共SomeSortoResponse接收任意JsonMap(映射映射){
//用键值对的映射做一些事情
}
JSON应该解组到一个映射,然后您就可以使用它了
或者,如果JSON类似于任意列表或字符串:
@POST
@Path("/json-list")
@Consumes(MediaType.APPLICATION_JSON)
public SomeSortOfResponse receiveArbitraryJsonList(List<String> list) {
// do stuff with list
}
@POST
@路径(“/json列表”)
@使用(MediaType.APPLICATION_JSON)
public SomeSortoResponse receiveArbitraryJsonList(列表){
//用清单做事
}
您需要为两个端点指定不同的@path,因为您使用的是Jersey,并且所使用的JSON可能包含任意键值对,您可以在Jersey控制器中尝试以下操作:
@POST
@Path("/json-map")
@Consumes(MediaType.APPLICATION_JSON)
public SomeSortOfResponse receiveArbitraryJsonMap(Map<String,String> map) {
// do stuff with map of key-value pairs
}
@POST
@路径(“/json映射”)
@使用(MediaType.APPLICATION_JSON)
公共SomeSortoResponse接收任意JsonMap(映射映射){
//用键值对的映射做一些事情
}
JSON应该解组到一个映射,然后您就可以使用它了
或者,如果JSON类似于任意列表或字符串:
@POST
@Path("/json-list")
@Consumes(MediaType.APPLICATION_JSON)
public SomeSortOfResponse receiveArbitraryJsonList(List<String> list) {
// do stuff with list
}
@POST
@路径(“/json列表”)
@使用(MediaType.APPLICATION_JSON)
public SomeSortoResponse receiveArbitraryJsonList(列表){
//用清单做事
}
您需要为两个端点提供不同的@path您是否使用Java和JAX-RS?请看一看,特别是“使用JSON”一节。是的,我使用Java和JAX-RS您是否使用Java和JAX-RS?请看一看,特别是“使用JSON”一节是的,我正在使用Java和JAX。实际上,这不仅仅是语言,我的输入json将包含不同Pojo的属性。例如,名称和语言来自开发人员Pojo,年龄,性别来自个人详细信息Pojo。这只是一个例子。是的,会的。在您的第一个示例中,“db”字段将仅为null。实际上,它不仅与语言有关,而且我的输入json将包含不同Pojo的属性。例如,名称和语言来自开发人员Pojo,年龄来自个人详细信息Pojo。这只是一个例子。是的,会的。在您的第一个示例中,字段“db”将仅为null。例如,我需要获取键值对(在我们的示例中,我希望获取名称、年龄、语言,但我不知道json中可用的键是什么)对我做一些操作你有没有尝试过对一个只有一个字段的类进行解组,这个字段是一个映射你对JSON有多少控制权?输出是否可以改为这样:“值”:{“名称”:“x”,“年龄”:23,“语言”:“java”}在我的情况下,我不知道键的数量和它们的值,可以是任何数字。我的输入json有时会像{“名称”:“x”,“年龄”:23,“语言”:“java”}但有时{“名称”:“x”,“年龄”:23,“语言”:“java”,“性别”:“女性”}比如说,我需要获取键值对(在我们的例子中,我想获取名称、年龄、语言,但我不知道json中有哪些键可用),并对其进行一些操作。您是否尝试过对一个只有一个字段的类进行解组,该字段是一个映射,您对json有多少控制权?输出是否可以改为这样:“值”:{“名称”:“x”,“年龄”:23,“语言”:“java”}在我的情况下,我不知道键的数量和它们的值,可以是任何数字。我的输入json有时会像{“名称”:“x”,“年龄”:23,“语言”:“java”}但有时{“名称”:“x”,“年龄”:23,“语言”:“java”,“性别”:“女性”}那很好。你能告诉我,如果我的json输入像{“name”、“age”、“id”、“sex”}意味着我只收到了作为json输入的密钥,我可以使用List而不是map对象吗(我尝试过,但给出了400个错误)我已经编辑了我的答案,解决了提交任意StringsThat列表的问题,工作正常。你能告诉我,如果我的json输入像{“name”、“age”、“id”、“sex”}意味着我只收到密钥作为json输入,我可以使用List而不是map对象吗(我尝试过,但给出了400个错误)我编辑了我的答案,解决了提交任意字符串列表的问题