0
json을 구문 분석하고 java의 json 배열에서 결과를 얻는 방법을 알고 있지만 배열이 무엇인지 알 수없는 json이 있습니까? 나는이 json에서 'state'와 'base_url'을 원한다. 어떤 사람이이 일을 어떻게 도와 줄 수 있습니까? 이 cmn2처럼 보인다 - - json에서 배열 결과를 구문 분석하고 가져올 수 없습니다
{
"tree": [{
"data": {
"title": "/clusterstate.json",
"attr": {
"href": "zookeeper?detail=true&path=%2Fclusterstate.json"
}
}
}],
"znode": {
"data": "{\n \"cmn2\":{\n \"shards\":{\n \"shard1\":{\n \"range\":\"80000000-ffffffff\",\n \"state\":\"active\",\n \"replicas\":{\n \"core_node1\":{\n \"state\":\"active\",\n \"base_url\":\"myurlforjson\",\n \"core\":\"cmn2_shard1_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\"},\n \"core_node3\":{\n \"state\":\"active\",\n \"base_url\":\"myurlforjson\",\n \"core\":\"cmn2_shard1_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\",\n \"leader\":\"true\"}}},\n \"shard2\":{\n \"range\":\"0-7fffffff\",\n \"state\":\"active\",\n \"replicas\":{\n \"core_node2\":{\n \"state\":\"active\",\n \"base_url\":\"mydomainmyurlforjson:8080/solr\",\n \"core\":\"cmn2_shard2_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\"},\n \"core_node4\":{\n \"state\":\"active\",\n \"base_url\":\"myurlforjson\",\n \"core\":\"cmn2_shard2_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\",\n \"leader\":\"true\"}}}},\n \"maxShardsPerNode\":\"1\",\n \"router\":{\"name\":\"compositeId\"},\n \"replicationFactor\":\"1\"},\n \"elect\":{\n \"shards\":{\n \"shard1\":{\n \"range\":\"80000000-ffffffff\",\n \"state\":\"active\",\n \"replicas\":{\n \"core_node3\":{\n \"state\":\"active\",\n \"base_url\":\"myurlforjson\",\n \"core\":\"elect_shard1_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\",\n \"leader\":\"true\"},\n \"core_node5\":{\n \"state\":\"active\",\n \"base_url\":\"mydomainmyurlforjson:8080/solr\",\n \"core\":\"elect_shard1_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\"}}},\n \"shard2\":{\n \"range\":\"0-7fffffff\",\n \"state\":\"active\",\n \"replicas\":{\n \"core_node4\":{\n \"state\":\"active\",\n \"base_url\":\"myurlforjson\",\n \"core\":\"elect_shard2_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\"},\n \"core_node6\":{\n \"state\":\"active\",\n \"base_url\":\"myurlforjson\",\n \"core\":\"elect_shard2_replica1\",\n \"node_name\":\"myurlforjson:8080_solr\",\n \"leader\":\"true\"}}}},\n \"maxShardsPerNode\":\"1\",\n \"router\":{\"name\":\"compositeId\"},\n \"replicationFactor\":\"1\"}}",
"prop": {
"pzxid": 4294967540,
"czxid": 4294967540,
"mzxid": 12884915656,
"mtime": "Thu Feb 20 09:00:48 UTC 2014 (1392886848018)",
"ephemeralOwner": 0,
"children_count": 0,
"cversion": 0,
"ctime": "Thu Dec 05 10:19:10 UTC 2013 (1386238750279)",
"aversion": 0,
"dataLength": 2388,
"version": 1119
},
"path": "/clusterstate.json"
}
}
이
날 난 당신이 자신에있어 거기에서URL url = new URL("http://myipaddress:8080/solr/zookeeper? detail=true&path=%2Fclusterstate.json");
System.out.println(url);
java.net.URLConnection connection = url.openConnection();
//String ref = "http://ajax.googleapis.com";
//connection.addRequestProperty("Referer", ref);
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
while ((line = reader.readLine()) != null) {
builder.append(line);
}
JSONObject json = new JSONObject(builder.toString());
//System.out.println(json);
JSONArray entries = json.getJSONArray("tree");
for (int i = 0; i < entries.length(); i++) {
JSONObject row = entries.getJSONObject(i);
bean test = new bean();
test.setRss(row.getString("data"));
System.out.println(row.getString("data"));
}
}
catch (Exception e) {
// TODO: handle exception
}
return "cloud";
}
** json.parse (jsonresponse) **; –
아니, 내가 시도해 알려 드리겠습니다, 빠른 답장을 보내 주셔서 감사합니다 – user3291784
왜 포인터/znode/data의 값이 객체 자체가 아닌 직렬화 된 JSON 객체입니까? – fge