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
在顶级lvl上迭代Json java_Java_Json - Fatal编程技术网

在顶级lvl上迭代Json java

在顶级lvl上迭代Json java,java,json,Java,Json,我使用json simple从json文件中传递一些数据,该文件如下所示 { "steam": { "name": "steam", "location": "C:\\Program Files (x86)\\Steam" }, "test": { "name": "test", "l

我使用json simple从json文件中传递一些数据,该文件如下所示

{
  "steam": {
    "name": "steam",
    "location": "C:\\Program Files (x86)\\Steam"
  },
  "test": {
    "name": "test",
    "location": "test"
  },
  "fessseffes": {
    "name": "test",
    "location": "test2"
  },
  "dacdd": {
    "name": "dacdd",
    "location": "test"
  }
}

我想对每个对象进行交互“steam、test、fessseffes、dacdd”我找到的唯一方法是使用.get(“steam”),但这没有帮助,因为我想对所有对象进行交互并使用它们创建java对象。

您可以使用第三方libs。 示例:com.google.gson.JsonObject::entrySet() 或者org.json.simple.JSONObject:JSONObject是一个HashMap。

请您参考

以下代码暂时有效

Jackson和Gson的示例程序(在POJOs的帮助下)

Dacdd.class

class Dacdd{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dacdd{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
class Fessseffes{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Fessseffes{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Steam{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Steam{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Test{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Root {
    public Steam steam;
    public Test test;
    public Fessseffes fessseffes;
    public Dacdd dacdd;

    public Steam getSteam() {
        return steam;
    }

    public void setSteam(Steam steam) {
        this.steam = steam;
    }

    @Override
    public String toString() {
        return "Root{" +
                "steam=" + steam +
                ", test=" + test +
                ", fessseffes=" + fessseffes +
                ", dacdd=" + dacdd +
                '}';
    }
}
Fessseffes.class

class Dacdd{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dacdd{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
class Fessseffes{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Fessseffes{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Steam{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Steam{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Test{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Root {
    public Steam steam;
    public Test test;
    public Fessseffes fessseffes;
    public Dacdd dacdd;

    public Steam getSteam() {
        return steam;
    }

    public void setSteam(Steam steam) {
        this.steam = steam;
    }

    @Override
    public String toString() {
        return "Root{" +
                "steam=" + steam +
                ", test=" + test +
                ", fessseffes=" + fessseffes +
                ", dacdd=" + dacdd +
                '}';
    }
}
Steam.class

class Dacdd{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dacdd{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
class Fessseffes{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Fessseffes{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Steam{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Steam{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Test{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Root {
    public Steam steam;
    public Test test;
    public Fessseffes fessseffes;
    public Dacdd dacdd;

    public Steam getSteam() {
        return steam;
    }

    public void setSteam(Steam steam) {
        this.steam = steam;
    }

    @Override
    public String toString() {
        return "Root{" +
                "steam=" + steam +
                ", test=" + test +
                ", fessseffes=" + fessseffes +
                ", dacdd=" + dacdd +
                '}';
    }
}
测试类

class Dacdd{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dacdd{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
class Fessseffes{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Fessseffes{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Steam{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Steam{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Test{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Root {
    public Steam steam;
    public Test test;
    public Fessseffes fessseffes;
    public Dacdd dacdd;

    public Steam getSteam() {
        return steam;
    }

    public void setSteam(Steam steam) {
        this.steam = steam;
    }

    @Override
    public String toString() {
        return "Root{" +
                "steam=" + steam +
                ", test=" + test +
                ", fessseffes=" + fessseffes +
                ", dacdd=" + dacdd +
                '}';
    }
}
Root.class

class Dacdd{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dacdd{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
class Fessseffes{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Fessseffes{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Steam{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Steam{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Test{
    public String name;
    public String location;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", location='" + location + '\'' +
                '}';
    }
}
public class Root {
    public Steam steam;
    public Test test;
    public Fessseffes fessseffes;
    public Dacdd dacdd;

    public Steam getSteam() {
        return steam;
    }

    public void setSteam(Steam steam) {
        this.steam = steam;
    }

    @Override
    public String toString() {
        return "Root{" +
                "steam=" + steam +
                ", test=" + test +
                ", fessseffes=" + fessseffes +
                ", dacdd=" + dacdd +
                '}';
    }
}
data.json

{
  "steam": {
    "name": "steam",
    "location": "C:\\Program Files (x86)\\Steam"
  },
  "test": {
    "name": "test",
    "location": "test"
  },
  "fessseffes": {
    "name": "test",
    "location": "test2"
  },
  "dacdd": {
    "name": "dacdd",
    "location": "test"
  }
}
    import com.fasterxml.jackson.databind.ObjectMapper;

    import java.io.IOException;
    public class Main {
    
        public static void main(String[]args) throws IOException {
      

    ObjectMapper objectMapper = new ObjectMapper();
    Root car = objectMapper.readValue(new FileReader("src/data.json"), Root.class);
    System.out.println(car);
    System.out.println(car.dacdd.name);
    System.out.println(car.steam.name);
    System.out.println(car.fessseffes.name);
    System.out.println(car.test.name);
    System.out.println(car.dacdd.location);
    System.out.println(car.steam.location);
    System.out.println(car.fessseffes.location);
    System.out.println(car.test.location);
    }
}
import com.google.gson.Gson;

import java.io.IOException;

public class Main {

    public static void main(String[]args) throws IOException {
    Root car = new Gson().fromJson(new JsonReader(new FileReader("src/data.json")), Root.class);
    System.out.println(car);
    System.out.println(car.dacdd.name);
    System.out.println(car.steam.name);
    System.out.println(car.fessseffes.name);
    System.out.println(car.test.name);
    System.out.println(car.dacdd.location);
    System.out.println(car.steam.location);
    System.out.println(car.fessseffes.location);
    System.out.println(car.test.location);
    }
}
Main.class(使用Jackson)

主类(使用Gson)

输出:

 Root{steam=Steam{name='steam', location='C:\Program Files (x86)\Steam'}, test=Test{name='test', location='test'}, fessseffes=Fessseffes{name='test', location='test2'}, dacdd=Dacdd{name='dacdd', location='test'}}
dacdd
steam
test
test
test
C:\Program Files (x86)\Steam
test2
test

我使用gson而不是json简单库。那个密码成功了

try {
            // create Gson instance
            Gson gson = new Gson();

            // create a reader
            JsonReader reader = new JsonReader(new FileReader("src/data.json"));

            // convert JSON file to map
            Map<?, ?> map = gson.fromJson(reader, Map.class);
            
            
            for (Map.Entry<?, ?> entry : map.entrySet()) {
                Map<?, ?> mapi = (Map)entry.getValue();
                for (Map.Entry<?, ?> entryi : mapi.entrySet()) {
                    System.out.println(entryi.getKey() + "=" + entryi.getValue());
                }
            }
            // close reader
            reader.close();

        } catch (Exception ex) {
           ```
试试看{
//创建Gson实例
Gson Gson=新的Gson();
//创建一个阅读器
JsonReader=newjsonreader(newfilereader(“src/data.json”);
//将JSON文件转换为映射
Map Map=gson.fromJson(reader,Map.class);
对于(Map.Entry:Map.entrySet()){
Map mapi=(Map)entry.getValue();
对于(Map.Entry entryi:mapi.entrySet()){
System.out.println(entryi.getKey()+“=”+entryi.getValue());
}
}
//近距离阅读
reader.close();
}捕获(例外情况除外){
```

那没用。因为json不是静态的。我现在尝试Gson,成功率更高。