fork(5) download
  1. import java.io.IOException;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5.  
  6.  
  7. public class Ideone {
  8. String json = "{\n" +
  9. " \"Port\":\n" +
  10. " {\n" +
  11. " \"@alias\": \"defaultHttp\",\n" +
  12. " \"Enabled\": \"true\",\n" +
  13. " \"Number\": \"10092\",\n" +
  14. " \"Protocol\": \"http\",\n" +
  15. " \"KeepAliveTimeout\": \"20000\",\n" +
  16. " \"ThreadPool\":\n" +
  17. " {\n" +
  18. " \"@enabled\": \"false\",\n" +
  19. " \"Max\": \"150\",\n" +
  20. " \"ThreadPriority\": \"5\"\n" +
  21. " },\n" +
  22. " \"ExtendedProperties\":\n" +
  23. " {\n" +
  24. " \"Property\":\n" +
  25. " [ \n" +
  26. " {\n" +
  27. " \"@name\": \"connectionTimeout\",\n" +
  28. " \"$\": \"20000\"\n" +
  29. " }\n" +
  30. " ]\n" +
  31. " }\n" +
  32. " }\n" +
  33. "}";
  34.  
  35. @Test
  36. public static void main(String[] args) {
  37. Map<String, String> map = new HashMap<String, String>();
  38. try {
  39. addKeys("", new ObjectMapper().readTree(json), map);
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. }
  43. System.out.println(map);
  44. }
  45.  
  46. private void addKeys(String currentPath, JsonNode jsonNode, Map<String, String> map) {
  47. if (jsonNode.isObject()) {
  48. ObjectNode objectNode = (ObjectNode) jsonNode;
  49. Iterator<Map.Entry<String, JsonNode>> iter = objectNode.fields();
  50. String pathPrefix = currentPath.isEmpty() ? "" : currentPath + ".";
  51.  
  52. while (iter.hasNext()) {
  53. Map.Entry<String, JsonNode> entry = iter.next();
  54. addKeys(pathPrefix + entry.getKey(), entry.getValue(), map);
  55. }
  56. } else if (jsonNode.isArray()) {
  57. ArrayNode arrayNode = (ArrayNode) jsonNode;
  58. for (int i = 0; i < arrayNode.size(); i++) {
  59. addKeys(currentPath + "[" + i + "]", arrayNode.get(i), map);
  60. }
  61. } else if (jsonNode.isValueNode()) {
  62. ValueNode valueNode = (ValueNode) jsonNode;
  63. map.put(currentPath, valueNode.asText());
  64. }
  65. }
  66. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:7: error: class Ideone is public, should be declared in a file named Ideone.java
public class Ideone {
       ^
Main.java:46: error: cannot find symbol
    private void addKeys(String currentPath, JsonNode jsonNode, Map<String, String> map) {
                                             ^
  symbol:   class JsonNode
  location: class Ideone
Main.java:35: error: cannot find symbol
    @Test
     ^
  symbol:   class Test
  location: class Ideone
Main.java:39: error: non-static variable json cannot be referenced from a static context
            addKeys("", new ObjectMapper().readTree(json), map);
                                                    ^
Main.java:39: error: cannot find symbol
            addKeys("", new ObjectMapper().readTree(json), map);
                            ^
  symbol:   class ObjectMapper
  location: class Ideone
Main.java:48: error: cannot find symbol
            ObjectNode objectNode = (ObjectNode) jsonNode;
            ^
  symbol:   class ObjectNode
  location: class Ideone
Main.java:48: error: cannot find symbol
            ObjectNode objectNode = (ObjectNode) jsonNode;
                                     ^
  symbol:   class ObjectNode
  location: class Ideone
Main.java:49: error: cannot find symbol
            Iterator<Map.Entry<String, JsonNode>> iter = objectNode.fields();
                                       ^
  symbol:   class JsonNode
  location: class Ideone
Main.java:53: error: cannot find symbol
                Map.Entry<String, JsonNode> entry = iter.next();
                                  ^
  symbol:   class JsonNode
  location: class Ideone
Main.java:57: error: cannot find symbol
            ArrayNode arrayNode = (ArrayNode) jsonNode;
            ^
  symbol:   class ArrayNode
  location: class Ideone
Main.java:57: error: cannot find symbol
            ArrayNode arrayNode = (ArrayNode) jsonNode;
                                   ^
  symbol:   class ArrayNode
  location: class Ideone
Main.java:62: error: cannot find symbol
            ValueNode valueNode = (ValueNode) jsonNode;
            ^
  symbol:   class ValueNode
  location: class Ideone
Main.java:62: error: cannot find symbol
            ValueNode valueNode = (ValueNode) jsonNode;
                                   ^
  symbol:   class ValueNode
  location: class Ideone
13 errors
stdout
Standard output is empty