当前位置: 首页 > 面试题库 >

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

华森
2023-03-14
问题内容

我想JSON使用JSON简单库使用Java 读取此文件。

我的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();
        }
    }
}

但是我得到以下异常:

线程“主”中的异常java.lang.ClassCastException:org.json.simple.JSONArray无法转换为javaapplication1.JavaApplication1.main(JavaApplication1.java:24)上的org.json.simple.JSONObject

有人可以告诉我我做错了吗?整个文件是一个数组,并且文件的整个数组中包含对象和另一个数组(汽车)。但是我不知道如何将整个数组解析为java数组。我希望有人可以帮助我解决我的代码中缺少的代码行。


问题答案:

如你所说,JSON Blob的最外层是一个数组。因此,你的解析器将返回JSONArray。然后可以JSONObject从数组中获取s …

  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简单库用java读取这个<code>JSON<code>文件。 我的文件如下所示: 这是我为读取此文件而编写的java代码: 但我得到了以下例外: 线程“main”中出现异常Java . lang . classcastexception:org . JSON . simple . JSON array无法转换为javaapplication1处的org.json.simple.J

  • 我想用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包含一个具有单个对象元素的数组,因此您应该