我创建了一个java服务器,它将HTTP GET请求URL作为
/Star/getDetails?sentMsg=data.requestorName:ABC,data.companyName:EFG,portfolios:
[{name:,placeholder:Portfolio 1,positions:[{ticker:T1234,weight:29.85},
{ticker:T2345,weight:70.15}],active:false}],analyticsDate:20140630}
我必须解析sentMsg
参数,例如我能够单独读取每个变量。例如,我应该能够阅读data.requestorName
,companyName
。我无法找到办法。
request.getParameter("sentMsg")
始终返回String
。
尝试通过json-simple
解析它 JSONParser jp = new JSONParser();
try {
Object obj = jp.parse(sentMsg);
JSONArray ja = (JSONArray)obj;
} catch (ParseException e) {
e.printStackTrace();
}
但这会给出解析异常。我有限制只使用json-simple
jar。有关如何做的任何建议吗?
答案 0 :(得分:0)
从HttpRequest对象获取参数sentMsg将其存储为字符串。从逗号分割即“,”,最后一个第二个标记是json字符串。您现在可以使用Json simple lib解析它并从中提取值。
答案 1 :(得分:-1)
如果您拥有有效的JSON,请执行以下操作:
private static String jsonString = "[{name : \"stackOverFlow\"}]";
将其转换为JSONArray,如:
JSONArray jsonArray = new JSONArray(jsonString );
然后你可以通过循环来获取JSONArray的价值:
for (int i = 0; i < jsonArray.length(); i++) { //Iterating over mediaArray
JSONObject media = jsonArray.getJSONObject(i);
String nameFromJSON = media.getString("name");
System.out.println("Name = " + nameFromJSON);
}
输出将是:
//Name = stackOverFlow