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
用Java解析JSON文件_Java_Json - Fatal编程技术网

用Java解析JSON文件

用Java解析JSON文件,java,json,Java,Json,我试图用Java解析一个JSON文件。但是JSON文件的格式很复杂(至少对我来说),因此我遇到了障碍 你可以读这个文件- 在“reddit”文件中,我感兴趣的“key”是“body”,它嵌套在文件中JSON数组的深处 我使用Jackson将JSON解析和反序列化为Java对象,代码如下- class Reddit { private String kind; private String data; public String getData() {

我试图用Java解析一个JSON文件。但是JSON文件的格式很复杂(至少对我来说),因此我遇到了障碍

你可以读这个文件-

在“reddit”文件中,我感兴趣的“key”是“body”,它嵌套在文件中JSON数组的深处

我使用Jackson将JSON解析和反序列化为Java对象,代码如下-

class Reddit
{
    private String kind;
    private String data;

    public String getData()
    {
        return this.data;
    }

    public void setData(String data)
    {
        this.data = data;
    }

    public String getKind()
    {
        return this.data;
    }

    public void setKind(String data)
    {
        this.data = data;
    }

}


public class Attempting_Read_JSON
{
    public static void main(String[] args)
    {
        // ObjectMapper can parse JSON into Java Objects, can do vice-versa and more-
        ObjectMapper OM = new ObjectMapper();

        try
        {
            out.println("\nInside try block.\n");
            File json_file = new File("src/main/resources/data/reddit/redditdump.json");
            Reddit[] R = OM.readValue(json_file, Reddit[].class);

            out.println("\nRead from JSON file to 'Reddit class object'\n");

            //out.println("\nObtained JSON- " + R.getData());
        }
        catch (Exception E)
        {
            E.printStackTrace();
        }

    out.println("\n\nProgram terminated successfully!\n");
    }
}
但在执行程序时,它总是给我错误。 关于如何获取与键“body”关联的值,有什么建议吗


谢谢

在您的
JSON
文件
“数据”中:
是一个对象,您试图通过
私有字符串数据分配给
Reddit
类中的
String

这就是为什么会出现这个错误

您需要创建一个类,比如说
Data
,使用
members contest\u模式,由..
禁用,或者使用JSON对象对其进行解析

还有,为什么要在这里设置
数据
使用
种类

    public String getKind()
    {
        return this.data;
    }

    public void setKind(String data)
    {
        this.data = data;
    }
编辑: 为了简单起见,我将给您举一个小例子:

JSON文件:

[
    {
        "kind": "Listing",
        "data": {
            "contest_mode": false
        }
    },
    {
        "kind": "Listing",
        "data": {
            "contest_mode": false
        }
    }
]
您的代码:

public class Attempting_Read_JSON {
    public static void main(String[] args) {
        ObjectMapper OM = new ObjectMapper();

        try {
            out.println("\nInside try block.\n");
            File json_file = new File(
                    "src/main/resources/data/reddit/redditdump.json");
            Reddit[] R = OM.readValue(json_file, Reddit[].class);

            out.println("\nRead from JSON file to 'Reddit class object'\n" + R[0].toString());

            // out.println("\nObtained JSON- " + R.getData());
        } catch (Exception E) {
            E.printStackTrace();
        }

        out.println("\n\nProgram terminated successfully!\n");
    }
}

class Reddit {
    private String kind;
    @Override
    public String toString() {
        return "Reddit [kind=" + kind + ", data=" + data.toString() + "]";
    }

    private Data data;

    public Data getData() {
        return this.data;
    }

    public void setData(Data data) {
        this.data = data;
    }

    public String getKind() {
        return this.kind;
    }

    public void setKind(String kind) {
        this.kind = kind;
    }
}

class Data
{
    boolean contest_mode;

    public boolean isContest_mode() {
        return contest_mode;
    }

    public void setContest_mode(boolean contest_mode) {
        this.contest_mode = contest_mode;
    }

    @Override
    public String toString() {
        return "[contest_mode=" + contest_mode + "]";
    }
}

“它不断给我错误”请分享错误too@shakeel给出的错误-com.fasterxml.jackson.databind.exc.MismatchedInputException:无法在[源:(文件);行:4,列:17](通过引用链:java.lang.OBJECT[][0]->de.dbvis.utils.Reddit[“数据”])处反序列化
java.lang.String
out-of-START_对象标记的实例你有没有什么教程可以让我参考如何使用JSON对象解析它?@Arun你可以在网上找到很多例子。这里有一个检查编辑部分