我正在使用JAVA 1.8进行编写,并使用Apache Tomcat来运行服务器,我无法从POST请求(即JSON)中检索数据。
我实际上在HashMap中需要它,即使它可以在JSON中读取,我甚至可以解析并将其转换为HashMap。我已经尝试了Internet上的几个链接,但总是遇到Could not deserialize to type interface PACKAGE NAME.
@POST
@Produces("application/json")
@Consumes("application/json")
@Path("ClassifyCase")
public Rules Classify(HttpServletRequest request) {
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
} catch (Exception e) { System.out.println("Buffer Reader Error"); }
System.out.println("What I read: "+jb);
System.out.println("Here la la l ala ");
// System.out.println("Case: ++ "+Case.toString());
System.out.println("Here la la l ala ");
Rules foundRule = new Rules();
// List<Rules> objListRules = new ArrayList<Rules>();
try
{
DataAccessInterface objDAInterface = new RuleDataAdapter();
AbstractDataBridge objADBridge = new DatabaseStorage(objDAInterface);
// foundRule = objADBridge.Classify(Case);
logger.info("Classification done!");
}
catch(Exception ex)
{
logger.info("Error in classification");
System.out.println("Couldnt Classify Properly!");
// return
}
return foundRule;
}
有人可以分享有关如何接收这些数据并将其转换为地图的指南,或者我可以直接获取地图!
String jsonString = "{\n" +
"\t\"1\": \"1\",\n" +
"\t\"FPG\": \"50\",\n" +
"\t\"Symptoms\": \"Yes\"\n" +
"}";
Map<String, String> map = new Gson().fromJson(jsonString, Map.class);
for (String key: map.keySet()) {
System.out.println(map.get(key));
}
我强烈建议您使用此JSON库。
您可以在Maven Repository中找到它,并且很容易将JSON
解析为Map
或JSONArray
或JSONObject
...根据您的需要进行操作..
这里是显示如何将JSON
解析为HashMap
的示例
Map<String, Object> map = new JSONObject(--JSONString here--).toMap();
仅此而已...
现在,如果您的JSON
有一个对象列表,我的意思是像maps
的列表一样,您只需要这样做...
JSONArray jsonArray = new JSONArray(--JSON string here--);
for(int i = 0; i < jsonArray.length(); i++){
Map<String, Object> map = jsonArray.getJSONObject(i).toMap();
}
这里是解释。
您将JSON
字符串作为参数传递给JSONArray
,what JSONArray does is, take your json string a parse it to like a list
然后创建一个for
以获取该列表的每个Object
并将其解析为map
。
注:JSONObject
的工作是获取JSONArray
的对象并对其进行解析...您可以将其解析为地图,也可以获取该地图的每个对象。]]