Java 以下格式的Json到csv

Java 以下格式的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

我正在使用下面的代码。并且获得这个输出

输出

标题:{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> 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;
}