Json数据的Java解码
我正在使用…查找一些vin数据。。。。我得到了完整的json数据。我使用的是JSONParser,返回的数据如下所示 从jsonobject打印所有键及其值的最佳方法是什么 我试过了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
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);
}
}
}