如何从HTTP GET请求中读取JSON?

时间:2014-07-31 11:46:04

标签: java json http get

我创建了一个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.requestorNamecompanyName。我无法找到办法。

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。有关如何做的任何建议吗?

2 个答案:

答案 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
相关问题