Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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
从java中的json项获取值_Java_Json_List - Fatal编程技术网

从java中的json项获取值

从java中的json项获取值,java,json,list,Java,Json,List,我有一个json文件,例如: { "A":"-0.4", "B":"-0.2", "C":"-0.2", "D":"X", "E":"0.2", "F":"0.2", "J":"0.3" } 我希望在通过函数调用列表json时返回它的每个元素。 我做了一个函数来实现这一点: public JSONObject my_function() { JSONParser parser = new JSONParser(); List<JSONObject&

我有一个json文件,例如:

{
  "A":"-0.4",
  "B":"-0.2",
  "C":"-0.2",
  "D":"X",
  "E":"0.2",
  "F":"0.2",
  "J":"0.3"

}
我希望在通过函数调用列表json时返回它的每个元素。 我做了一个函数来实现这一点:

public JSONObject my_function() {
JSONParser parser = new JSONParser();

    List<JSONObject> records = new ArrayList<JSONObject>();
    try (FileReader reader = new FileReader("File.json")) {

        //Read JSON file
        Object obj = parser.parse(reader);
        JSONObject docs = (JSONObject) obj;
        LOGGER.info("read elements" + docs); // it display all a list of a json file like this: {"A":"-0.4","B":"-0.2","C":"-0.2","D":"X","E":"0.2","F":"0.2","J":"0.3"}


        for (int i = 0; i < docs.size(); i++) {
            records.add((JSONObject) docs.get(i));
            System.out.println((records)); // it return null 

        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }
    LOGGER.info("The first element of a list is:" +records.get(0)); // return null
    return records.get(0);

谢谢

据我所知,在Java中只能使用类的方法。 如果您想通过第一个元素获得第二个元素,您应该在类中创建两个方法,如

class Main {
Map<String, String> records = new HashMap<>();

public JSONObject my_function() {
// your realization where you should insert your pairs into Map.
}

public String get(String firstElement){
return map.getValue(firstElement);
}

}


class someOtherClass {
Main main = new Main();
main .my_function();
main .get("A");

}
主类{
映射记录=新的HashMap();
公共JSONObject my_函数(){
//您应该在地图中插入对的位置实现。
}
公共字符串get(字符串firstElement){
返回map.getValue(firstElement);
}
}
给别人上课{
Main Main=新Main();
main.my_函数();
main.get(“A”);
}

首先,您需要一个用于映射的类

public class Json {

private String a;
private String b;
private String c;
private String d;
private String e;
private String f;
private String j;

//getters and setters

}
然后在你的工人阶级

ObjectMapper mapper = new ObjectMapper();

//JSON from file to Object
Json jsn = mapper.readValue(new File("File.json"), Json.class);
然后你可以用通常的方式使用那个物体

这是我使用的依赖项

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>

com.fasterxml.jackson.core

您的文档不是列表对象,而是HashMap。不能使用该对象的索引对其进行迭代。您可以使用get(键)。您的密钥是a、b、c等。使用库并将给定的
JSON
反序列化到
Map
。见相关问题:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>