任何人都知道--如何将JSONObject转换为POJO类?
我已经创建了一个适配器,我想在将其发送到客户端之前将其转换为Pojo。
1)my ResourceAdapterResource.java(适配器)
@POST
@Path("profiles/{userid}/{password}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public JSONObject getStatus(@PathParam("userid") String userid, @PathParam("password") String password) throws IOException {
Map<String, Object> maps = new HashMap<String,Object>();
map.put("userid", userid);
map.put("password",password);
// json Object will get the value from SOAP Adapter Service
JSONObject obj = soapAdapterService(maps);
/** Question here, how to add to POJO.. I have code here but not work, null values**/
// set to Object Pojo Employee
Employee emp = new Employee();
emp.setUserId(String.valueOf(obj.get("userId")));
emp.setUserStatus((String.valueOf(obj.get("userStatus")));
// when I logging its show Empty.
logger.info("User ID from service : " + emp.getUserId());
logger.info("Status Id from service : " + emp.getUserStatus());
return obj;
}
import java.io.Serializable;
@SuppressWarnings("serial")
public class Employee implements Serializable{
private String userid;
private String userStatus;
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid= userid;
}
public String getUserStatus() {
return userStatus;
}
public void setUserStaus(String userStatus) {
this.userStatus= userStatus;
}
}
但是当我检查log info(message.log)-服务器日志时,状态为NULL。
来自服务的用户ID:null来自服务的状态ID:null
看起来它的JSON Java IBM API,它有没有像Jackson API那样的ObjectMapper将JsonObject映射到POJO类。
{
"statusReason": "OK",
"responseHeaders": {
"Content-Length": "1849",
"Content-Language": "en-US",
"Date": "Thu, 23 Mar 2017 01:40:33 GMT",
"X-Powered-By": "Servlet/3.0",
"Content-Type": "text/xml; charset=utf-8"
},
"isSuccessful": true,
"responseTime": 28,
"totalTime": 33,
"warnings": [],
"Envelope": {
"soapenv": "http://schemas.xmlsoap.org/soap/envelope/",
"Body": {
"checkEmployeeLoginResponse": {
"a": "http://com.fndong.my/employee_Login/",
"loginEmployeeResp": {
"Employee": {
"idmpuUserName": "fndong",
"Status": "A",
"userid": "fndong",
"Password": "AohIeNooBHfedOVvjcYpJANgPQ1qq73WKhHvch0VQtg@=",
"PwdCount": "1",
"rEmail": "fndong@gmail.com"
},
"sessionId": "%3F",
"statusCode": "0"
}
}
}
},
"errors": [],
"info": [],
"statusCode": 200
}
String objUserId = (String) objectAuth.get("userid");
很明显,您的String.ValueOf(Obj.Get(“userid”))
返回的是null或空,所以问题是它的哪一部分?
您可以记录obj.get(“userid”)
并查看其是否为空,在这种情况下,响应不包含您期望的内容。
但我怀疑问题是String.valueOf()
转换没有达到预期的效果。MobileFirst中的JSONObject
看起来是com.ibm.json.java.JSONObject
,当我在上面搜索时,我找到的示例只是转换为String
:
emp.setUserId((String) obj.get("userId"));
编辑:现在您已经添加了Swagger结果,我认为您的obj.get(“userid”)
本身可能返回null。你查过了吗?
首先,“userid”不是“userid”。资本化很重要。
但更重要的是,“userid”嵌套在JSON的深处,所以我认为仅仅从顶层JSONObject
获取它是行不通的。我想你应该做一些事情:
JSONObject envelope = (JSONObject) obj.get("Envelope");
JSONObject body = (JSONObject) envelope.get("Body");
JSONObject response = (JSONObject) body.get("checkEmployeeLoginResponse");
JSONObject resp = (JSONObject) response.get("loginEmployeeResp");
JSONObject employee = (JSONObject) resp.get("Employee");
emp.setUserId((String) employee.get("userid"));
emp.setUserStatus((String) employee.get("status"));
问题内容: 似乎无法弄清楚。我正在尝试在GSON中进行JSON树操作,但是在转换为之前,我不知道或没有POJO将字符串转换为的情况。有没有办法直接从a 转到? 我已经尝试了以下(Scala语法): 但失败,JSON被转义并解析为唯一,并 返回一个empty 。 有任何想法吗? 问题答案: 使用JsonParser; 例如:
问题内容: 我有一个对象。用它创建对象的最简单方法是什么? 问题答案: 再次从中获取JSON字符串并进行解析
问题内容: 我有一些要转换成的属性 我可以从json.org或使用什么吗? 问题答案: 使用来自http://json.org/的 Jackson(http://jackson.codehaus.org/)
问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。
我试着把POJO转换成protobuf。这和我想做的是一样的。(https://github.com/BAData/protobuf-converter,将协议缓冲区转换为POJO) 但是,它不支持protobuf中的映射类型。所以当我试图转换protobuf的地图时 有什么简单的方法做这项工作吗?
我想将字节转换为JsonObject。我试着这样: 但我遇到编译器错误: 我怎么能这样呢?