当前位置: 首页 > 知识库问答 >
问题:

如何使用简单的JSON库将json文件读入java

谯和煦
2023-03-14

我想使用JSON简单库用java读取这个<code>JSON<code>文件。

我的JSON文件如下所示:

[  
    {  
        "name":"John",
        "city":"Berlin",
        "cars":[  
            "audi",
            "bmw"
        ],
        "job":"Teacher"
    },
    {  
        "name":"Mark",
        "city":"Oslo",
        "cars":[  
            "VW",
            "Toyata"
        ],
        "job":"Doctor"
    }
]

这是我为读取此文件而编写的java代码:

package javaapplication1;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JavaApplication1 {
    public static void main(String[] args) {

        JSONParser parser = new JSONParser();

        try {     
            Object obj = parser.parse(new FileReader("c:\\file.json"));

            JSONObject jsonObject =  (JSONObject) obj;

            String name = (String) jsonObject.get("name");
            System.out.println(name);

            String city = (String) jsonObject.get("city");
            System.out.println(city);

            String job = (String) jsonObject.get("job");
            System.out.println(job);

            // loop array
            JSONArray cars = (JSONArray) jsonObject.get("cars");
            Iterator<String> iterator = cars.iterator();
            while (iterator.hasNext()) {
             System.out.println(iterator.next());
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

但我得到了以下例外:

线程“main”中出现异常Java . lang . classcastexception:org . JSON . simple . JSON array无法转换为javaapplication1处的org.json.simple.JSONObject。Java application 1 . main(Java application 1 . Java:24)

有人能告诉我我做错了什么吗?整个文件是一个数组,在文件的整个数组中有对象和另一个数组(汽车)。但是我不知道如何将整个数组解析成一个java数组。我希望有人能帮我一个代码行,我在我的代码中丢失了。

谢谢

共有3个答案

王彭薄
2023-03-14

添加杰克逊数据绑定:

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

创建具有相关字段的 DTO 类并读取 JSON 文件:

ObjectMapper objectMapper = new ObjectMapper();
ExampleClass example = objectMapper.readValue(new File("example.json"), ExampleClass.class);
拓拔嘉运
2023-03-14

您可以使用 jackson 库,只需使用这 3 行即可将 json 文件转换为 Java 对象。

ObjectMapper mapper = new ObjectMapper();
InputStream is = Test.class.getResourceAsStream("/test.json");
testObj = mapper.readValue(is, Test.class);
焦同
2023-03-14

整个文件是一个数组,在文件的整个数组中有对象和其他数组(例如汽车)。

正如您所说,JSON blob的最外层是一个数组。因此,解析器将返回一个< code>JSONArray。然后,您可以从数组中获取JSONObject...

  JSONArray a = (JSONArray) parser.parse(new FileReader("c:\\exer4-courses.json"));

  for (Object o : a)
  {
    JSONObject person = (JSONObject) o;

    String name = (String) person.get("name");
    System.out.println(name);

    String city = (String) person.get("city");
    System.out.println(city);

    String job = (String) person.get("job");
    System.out.println(job);

    JSONArray cars = (JSONArray) person.get("cars");

    for (Object c : cars)
    {
      System.out.println(c+"");
    }
  }

作为参考,请参阅json-Simple解码示例页面上的“示例1”。

 类似资料:
  • 问题内容: 我想使用JSON简单库使用Java 读取此文件。 我的文件如下所示: 这是我为读取此文件而编写的Java代码: 但是我得到以下异常: 线程“主”中的异常java.lang.ClassCastException:org.json.simple.JSONArray无法转换为上的。 有人可以告诉我我做错了吗?整个文件是一个数组,并且文件的整个数组中包含对象和另一个数组(汽车)。但是我不知道如

  • 我想用GSON库用java读这个JSON文件。我刚开始使用gson Libray。有人请纠正我的代码我的JSON文件如下所示: 这是我为读取这个文件而编写的java代码: 但我得到以下异常:

  • 我相信我需要创建一个JsonReader对象并调用其中一个Json静态方法,但我在读取文件时遇到了问题。json。 创建读取器方法似乎要求输入是一个字符串。我应该继续尝试将我的整个JSON文件解释为字符串吗?

  • 我正在尝试将 json 文件读入 Spark 数据帧,但我将整个文件作为一行和一列获取,我试图将其拆分为多列: 这是我运行这行代码得到的输出: 这是已创建的数据帧的架构: 我的目标是将图像中的每个对象放在一行和分隔的列中,这意味着例如“Z4ah9SemQjX2cKN187pX”,其值为:艺术家,created_at…在第一行,“Z552dVXF5vp80bAajYrn”在第二行等。 我很陌生,可以

  • 问题内容: 背景 我正在对Node.js进行一些试验,想从文本文件或.js文件(更好的??)中读取JSON对象到内存中,以便我可以从代码中快速访问该对象。我意识到那里有像Mongo,Alfred等的东西,但是那不是我现在所需要的。 题 如何使用JavaScript / Node从文本或js文件中读取JSON对象并将其读入服务器内存中? 问题答案: 同步: 异步:

  • 问题内容: 我正在尝试从JSON文件读取值到数组以进行进一步处理。我正在使用JSON-Smart 1.2.0库。由于某些限制,我不能使用2.0版本。 我收到以下异常。 我什至尝试使用JSONArray而不是JSONObject。我在这儿做错了什么?这是读取JSON内容的正确方法吗? 以下是Java代码。 以下是json文件的内容。 问题答案: 您的JSON包含一个具有单个对象元素的数组,因此您应该