用Java解析JSON文件
我试图用Java解析一个JSON文件。但是JSON文件的格式很复杂(至少对我来说),因此我遇到了障碍 你可以读这个文件- 在“reddit”文件中,我感兴趣的“key”是“body”,它嵌套在文件中JSON数组的深处 我使用Jackson将JSON解析和反序列化为Java对象,代码如下-用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() {
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你可以在网上找到很多例子。这里有一个检查编辑部分