在这篇文章中,我们提供了一个全面的Java JSON解析器示例。JSON是一种简单的文本格式,便于阅读和写作。它是一种广泛使用的数据交换语言,因为它的解析和生成对于机器来说很容易。在Java语言中,有一些JSON处理方法。

在这个例子中,我们将使用一个通用的Java工具包json-simple 我们将了解如何解析每种类型的json文件。

 

1.设置环境

在开始编码之前,我们必须为编译器设置适当的环境,以便识别JSON's类。如果您想通过Maven构建项目,则应该为您的以下内容添加以下依赖项pom.xml

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1</version>
</dependency>

否则,您必须json-simple-1.1.1.jar在CLASSPATH中添加最新版本。

2. JSON解析的示例

正如我们提到的,我们将展示如何解析json文件,因此我们将创建自己的.json文件。此文件已命名jsonTestFile.json并具有下一个结构:

jsonTestFile.json:

{
  "id": 1,
  "firstname": "Katerina",
  "languages": [
    {
      "lang": "en",
      "knowledge": "proficient"
    },
    {
      "lang": "fr",
      "knowledge": "advanced"
    }
  ],
  "job": {
    "site": "www.javacodegeeks.com",
    "name": "Java Code Geeks"
  }
}

现在在项目中创建一个名为的java文件JsonParseTest。然后粘贴以下代码。

JsonParseTest.java:

package com.javacodegeeks.javabasics.jsonparsertest;
 
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 JsonParseTest {
 
    private static final String filePath = "C:\\Users\\katerina\\Desktop\\jsonTestFile.json";
     
    public static void main(String[] args) {
 
        try {
            // read the json file
            FileReader reader = new FileReader(filePath);
 
            JSONParser jsonParser = new JSONParser();
            JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
 
            // get a String from the JSON object
            String firstName = (String) jsonObject.get("firstname");
            System.out.println("The first name is: " + firstName);
 
            // get a number from the JSON object
            long id =  (long) jsonObject.get("id");
            System.out.println("The id is: " + id);
 
            // get an array from the JSON object
            JSONArray lang= (JSONArray) jsonObject.get("languages");
             
            // take the elements of the json array
            for(int i=0; i<lang.size(); i++){
                System.out.println("The " + i + " element of the array: "+lang.get(i));
            }
            Iterator i = lang.iterator();
 
            // take each value from the json array separately
            while (i.hasNext()) {
                JSONObject innerObj = (JSONObject) i.next();
                System.out.println("language "+ innerObj.get("lang") + 
                        " with level " + innerObj.get("knowledge"));
            }
            // handle a structure into the json object
            JSONObject structure = (JSONObject) jsonObject.get("job");
            System.out.println("Into job structure, name: " + structure.get("name"));
 
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (ParseException ex) {
            ex.printStackTrace();
        } catch (NullPointerException ex) {
            ex.printStackTrace();
        }
 
    }
 
}

现在让我们解释上面的代码。在我们创建一个实例后JSONParser,我们JSONObject通过解析FileReader我们的.json文件来创建一个。它JSONObject包含一组键值对,我们可以从中获取json文件的每个值。要检索原始对象,请调用实例的get()方法JSONObject's,将指定的键定义为参数。为方法添加合适的铸件很重要。对于json文件中的数组类型,JSONArray用于表示有序的值序列。正如您在代码中注意到的那样,Iterator应该使用a来获取json数组的每个值。json文件中的结构,JSONObject为了检索值而签署新的创建。

您可以在下面看到执行的输出。

输出:

The first name is: Katerina
The id is: 1
The 0 element of the array: {"knowledge":"proficient","lang":"en"}
The 1 element of the array: {"knowledge":"advanced","lang":"fr"}
language en with level proficient
language fr with level advanced
Into job structure, name: Java Code Geeks

 

下载源代码

这是Java JSON解析器的一个示例。扫码回复“jsonexample”下载此示例的完整源代码: