如何使Java以JSON格式返回HTTP头作为键值数组
我将以下内容作为基本上抓取网页的方法的一部分,我希望将结果的标题和正文映射到JSON,正文作为字符串输出,但理想情况下,我希望将标题值拆分为键值,以便在JavaScript中我可以直接访问它们如何使Java以JSON格式返回HTTP头作为键值数组,java,Java,我将以下内容作为基本上抓取网页的方法的一部分,我希望将结果的标题和正文映射到JSON,正文作为字符串输出,但理想情况下,我希望将标题值拆分为键值,以便在JavaScript中我可以直接访问它们 Map<String, String> assoc = new HashMap<String, String>(); Map<String, List<String>> headerMap = new LinkedHashMap<String, Li
Map<String, String> assoc = new HashMap<String, String>();
Map<String, List<String>> headerMap = new LinkedHashMap<String, List<String>>();
headerMap = connection.getHeaderFields();
for (String key : headerMap.keySet()) {
assoc.put(key, headerMap.get(key).toString());
}
JSONObject returnObj = new JSONObject();
returnObj.put("header", assoc);
returnObj.put("body", sb.toString());
return returnObj.toString(); //Set digit to add indent spacing.
理想情况下,这将更像(对javascript更友好)
我想你可能在找
{"header":[
{"cache-control=[max-age=0]"},
{"content-type=[text\/html]"},
{"content-type=[text\/html]"}
]}
我以前没有使用过这个api,但是通过javadoc,我非常确信上面的代码会满足您的需求。由于您只处理一组数据(header对象),因此此方法将起作用。如果你有很多对象,你必须做一些不同的事情。试试flexjson,这是我经常使用的
另外,获取当前输出的原因是JSONObject.put调用映射的toString(),它生成一个由所有键/值对组成的字符串,表示为“key=value”,用逗号分隔,并用花括号括起来
{"key1=value1", "key2=value2", etc..}
{"header":[
{"cache-control=[max-age=0]"},
{"content-type=[text\/html]"},
{"content-type=[text\/html]"}
]}
JSONObject returnObj = new JSONObject();
for (String key : headerMap.keySet()) {
returnObj.put(key, headerMap.get(key).toString());
}
return returnObj.toString();
{"key1=value1", "key2=value2", etc..}