Java 以下格式的Json到csv
我正在使用下面的代码。并且获得这个输出 输出 标题:{id:12345,值:123,人:1} CDD:{CDDid:3456} 但我需要的输出如下所示: 标题id 12345 标题值123 头人1 CDD CDDid 3456Java 以下格式的Json到csv,java,json,Java,Json,我正在使用下面的代码。并且获得这个输出 输出 标题:{id:12345,值:123,人:1} CDD:{CDDid:3456} 但我需要的输出如下所示: 标题id 12345 标题值123 头人1 CDD CDDid 3456 import org.json.JSONException; import org.json.JSONObject; public class Test{ private static HashMap<String, Object> getHashMapF
import org.json.JSONException;
import org.json.JSONObject;
public class Test{
private static HashMap<String, Object> getHashMapFromJson(String json) throws JSONException {
HashMap<String, Object> map = new HashMap<String, Object>();
JSONObject jsonObject = new JSONObject(json);
for (Iterator<String> it = jsonObject.keys(); it.hasNext();) {
String key = it.next();
map.put(key, jsonObject.get(key));
}
return map;
}
public static void main(String[] args ){
String json = " { \"Header\" : {\"id\" : 12345, \"value\" : \"123\", \"person\" : \"1\"} ,\"CDD\" : {\"CDDid\" : 3456 }}";
try {
HashMap<String, Object> map = getHashMapFromJson(json);
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
} catch (JSONException e) {
System.out.println("JsonTest" + "Failed parsing " + json + e);
}
}
}
通过这种方式检索json数据这是我的解决方案,我想在getHashMapFromJson方法中获得正确的数据 toMap方法是一个简化的版本,如果您的json更复杂,那么您可能希望从这个答案以及toListmethod中研究实现完整的toMap方法
private static HashMap<String, Object> getHashMapFromJson(String json) throws JSONException {
HashMap<String, Object> map = new HashMap<String, Object>();
JSONObject jsonObject = new JSONObject(json);
for (Iterator<String> it = jsonObject.keys(); it.hasNext();) {
String key = it.next();
JSONObject value = jsonObject.getJSONObject(key);
Map<String, Object> valueMap = toMap((JSONObject) value);
valueMap.forEach((k,v) -> map.put(key + " " + k, v));
}
return map;
}
public static Map<String, Object> toMap(JSONObject object) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();
Iterator<String> keysItr = object.keys();
while(keysItr.hasNext()) {
String key = keysItr.next();
Object value = object.get(key);
map.put(key, value);
}
return map;
}
这不是我要找的,我想打印父名称,即页眉和子页眉一样多。请给我提供上述json的任何工作解决方案,以获得所需的输出。这是可行的,但我不想硬编码。如果有大的jsonanyidea而不指定或HARCODE,这是不可行的。您可以在循环中使用上述代码是,但在循环中使用方法getJSONObjectHeader,我需要指定我不想要的特定对象
private static HashMap<String, Object> getHashMapFromJson(String json) throws JSONException {
HashMap<String, Object> map = new HashMap<String, Object>();
JSONObject jsonObject = new JSONObject(json);
for (Iterator<String> it = jsonObject.keys(); it.hasNext();) {
String key = it.next();
JSONObject value = jsonObject.getJSONObject(key);
Map<String, Object> valueMap = toMap((JSONObject) value);
valueMap.forEach((k,v) -> map.put(key + " " + k, v));
}
return map;
}
public static Map<String, Object> toMap(JSONObject object) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();
Iterator<String> keysItr = object.keys();
while(keysItr.hasNext()) {
String key = keysItr.next();
Object value = object.get(key);
map.put(key, value);
}
return map;
}