Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json数据的Java解码_Java_Json_Jsonobject - Fatal编程技术网

Json数据的Java解码

Json数据的Java解码,java,json,jsonobject,Java,Json,Jsonobject,我正在使用…查找一些vin数据。。。。我得到了完整的json数据。我使用的是JSONParser,返回的数据如下所示 从jsonobject打印所有键及其值的最佳方法是什么 我试过了 Iterator<?> keys = object.keys(); while( keys.hasNext() ){ String key = (String)keys.next(); try { if( o

我正在使用…查找一些vin数据。。。。我得到了完整的json数据。我使用的是JSONParser,返回的数据如下所示

从jsonobject打印所有键及其值的最佳方法是什么

我试过了

Iterator<?> keys = object.keys();
        while( keys.hasNext() ){
            String key = (String)keys.next();
            try {
                if( object.get(key) instanceof JSONObject ){
                    detailsTextOut.append(key);
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
Iterator keys=object.keys();
while(keys.hasNext()){
字符串键=(字符串)键。下一步();
试一试{
if(object.get(key)instanceof JSONObject){
detailsTextOut.append(键);
}
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}

但是它对我不起作用:(,有什么线索吗?

使用方法
getNames()
获取JSON对象的所有键(字段名)


使用Jackson ObjectMapper:

    String s = "replace_with_your_json_string";
    ObjectMapper mapper = new ObjectMapper();
    Map<String, Object> values = (Map<String, Object>) mapper.readValue(s, Map.class);
    iterate(values, "");

    private void iterate(Map<String, Object> map, String indent) {
            for(Map.Entry<String, Object> o : map.entrySet()) {
                    System.out.println(indent + o.getKey());
                    if(o.getValue() instanceof Map) {
                            iterate((Map<String, Object>) o.getValue(), indent + "\t");
                    }
                    if(o.getValue() instanceof List) {
                            iterate((List<Object>) o.getValue(), indent + "\t");
                    }
                    else if(o.getValue() instanceof String) {
                            System.out.println(indent + "\t" + o.getValue());
                    }
                    else if(o.getValue() instanceof Number) {
                            System.out.println(indent + "\t" + o.getValue());
                    }
            }
    }

    private void iterate(List<Object> list, String indent) {
            for(Object o : list) {
                    if(o instanceof Map) {
                            iterate((Map<String, Object>) o, indent + "\t");
                    }
                    if(o instanceof List) {
                            iterate((List<Object>) o, indent + "\t");
                    }
                    else if(o instanceof String) {
                            System.out.println(indent + "\t" + o);
                    }
                    else if(o instanceof Number) {
                            System.out.println(indent + "\t" + o);
                    }
            }
    }
String s=“用您的json字符串替换”;
ObjectMapper mapper=新的ObjectMapper();
Map values=(Map)mapper.readValue(s,Map.class);
迭代(值“”);
私有void迭代(映射、字符串缩进){
对于(Map.Entry o:Map.entrySet()){
System.out.println(indent+o.getKey());
if(o.getValue()实例映射){
迭代((映射)o.getValue(),缩进+“\t”);
}
if(o.getValue()instanceof List){
迭代((列表)o.getValue(),缩进+“\t”);
}
else if(o.getValue()instanceof String){
System.out.println(缩进+“\t”+o.getValue());
}
else if(o.getValue()instanceof Number){
System.out.println(缩进+“\t”+o.getValue());
}
}
}
私有void迭代(列表、字符串缩进){
用于(对象o:列表){
if(o映射的实例){
迭代((映射)o,缩进+“\t”);
}
if(o instanceof List){
迭代((列表)o,缩进+“\t”);
}
else if(o字符串实例){
System.out.println(缩进+“\t”+o);
}
else if(o实例编号){
System.out.println(缩进+“\t”+o);
}
}
}

到底是什么不起作用?好吧,有几种不同的JSON工具包使用一个名为JSONObject的类,所以我们不知道您使用的是哪种工具包。我使用的是import org.JSON.JSONObject;@ccleve它只是给了我第一个键。不知道如何在“styleHolder”键中获取所有键
    String s = "replace_with_your_json_string";
    ObjectMapper mapper = new ObjectMapper();
    Map<String, Object> values = (Map<String, Object>) mapper.readValue(s, Map.class);
    iterate(values, "");

    private void iterate(Map<String, Object> map, String indent) {
            for(Map.Entry<String, Object> o : map.entrySet()) {
                    System.out.println(indent + o.getKey());
                    if(o.getValue() instanceof Map) {
                            iterate((Map<String, Object>) o.getValue(), indent + "\t");
                    }
                    if(o.getValue() instanceof List) {
                            iterate((List<Object>) o.getValue(), indent + "\t");
                    }
                    else if(o.getValue() instanceof String) {
                            System.out.println(indent + "\t" + o.getValue());
                    }
                    else if(o.getValue() instanceof Number) {
                            System.out.println(indent + "\t" + o.getValue());
                    }
            }
    }

    private void iterate(List<Object> list, String indent) {
            for(Object o : list) {
                    if(o instanceof Map) {
                            iterate((Map<String, Object>) o, indent + "\t");
                    }
                    if(o instanceof List) {
                            iterate((List<Object>) o, indent + "\t");
                    }
                    else if(o instanceof String) {
                            System.out.println(indent + "\t" + o);
                    }
                    else if(o instanceof Number) {
                            System.out.println(indent + "\t" + o);
                    }
            }
    }