📜  在Java中处理 JSON 数据

📅  最后修改于: 2022-05-13 01:54:28.049000             🧑  作者: Mango

在Java中处理 JSON 数据

JSON代表 JavaScript Object Notation,它是一种轻量级的基于文本的开放标准,其设计易于人类可读的数据交换。一般来说,JSON 是从 JavaScript 扩展而来的。 JSON 独立于语言,易于阅读和编写。 JSON 的文件扩展名为.json

示例 – JSON 格式

在下面给出的示例中,您将看到如何以 JSON 格式存储值。考虑学生信息,其中 Stu_id、Stu_Name、Course 是您需要存储的实体,然后您可以以 JSON 格式将这些值存储为键值对形式。我们来看一下。

{
   "Student": [
    
      {
         "Stu_id"   :  "1001",
         "Stu_Name" :  "Ashish",
         "Course"   :  "Java",
      },
    
      {
         "Stu_id"   :  "1002",
         "Stu_Name" :  "Rana",
         "Course"   :  "Advance Java",
      }
   ]
}

它是我们可以访问的方法,即在Java编程语言中读取或写入 JSON 数据。这里我们简单地使用json.simple库通过Java访问此功能,这意味着我们可以使用Java编程语言中的json.simple库对 JSON 对象进行编码或解码。现在, Java的 json.simple 包中包含以下文件。所以要访问我们首先必须安装 json.simple 包。首先安装时,我们需要设置 json-simple.jar 类路径或在不同情况下添加 Maven 依赖项。

第 1 步:使用此链接下载json.simple :json.sample 的下载链接

第 2 步:还有一种添加 Maven 依赖项的方法,为此,我们必须将下面给出的代码添加到我们的pom.xml文件中。


    com.googlecode.json-simple  
    json-simple  
    1.1  
 

上面下载的.jar文件中包含以下Java源文件:

// .jar file 
META-INF/MANIFEST.MF
org.json.simple.ItemList.class
org.json.simple.JSONArray.class
org.json.simple.JSONAware.class
org.json.simple.JSONObject.class
org.json.simple.JSONStreamAware.class
org.json.simple.JSONValue.class
org.json.simple.parser.ContainerFactory.class
org.json.simple.parser.ContentHandler.class
org.json.simple.parser.JSONParser.class
org.json.simple.parser.ParseException.class
org.json.simple.parser.Yylex.class
org.json.simple.parser.Yytoken.class

Java中的 JSON 对象编码:

正如我们上面所讨论的,这个json.simple库用于在Java中读取/写入或编码/解码 JSON 对象。因此,让我们看看如何使用JSONObject函数对 JSON 对象的一部分进行编码。现在我们创建一个Java文件mainEncoding. Java并将下面编写的代码保存在其中。

Java
import org.json.simple.JSONObject;
  
// Program for print data in JSON format.
public class JavaJsonEncoding 
{
   public static void main(String args[])
   {
       // In java JSONObject is used to create JSON object  
       // which is a subclass of java.util.HashMap. 
         
       JSONObject file = new JSONObject();
       file.put("Full Name", "Ritu Sharma");
       file.put("Roll No.", new Integer(1704310046));
       file.put("Tution Fees", new Double(65400));
  
  
       // To print in JSON format.
       System.out.print(file);
        
   }
}


Java
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
  
public class JavaJsonDecoding {
  
   public static void main(String[] args)
   {
       // Converting JSON data into Java String format
       String k = "{\"Full Name\":\"Ritu Sharma\",  
       \"Tution Fees\":65400.0, \"Roll No.\":1704310046}";
       Object file = JSONValue.parse(k);
         
       // In java JSONObject is used to create JSON object  
       JSONObject jsonObjectdecode = (JSONObject)file;
  
       // Converting into Java Data type
       // format From Json is the step of Decoding.
       String name = (String)jsonObjectdecode.get("Full Name");
       double fees = (Double)jsonObjectdecode.get("Tution Fees");
       long rollno = (Long)jsonObjectdecode.get("Roll No.");
       System.out.println(name + " " + fees + " " + rollno);
   }
}


输出 :

{"Full Name":"Ritu Sharma", "Roll No.":1704310046, "Tution Fees":65400}

现在我们将看到如何使用JSONObject函数编写解码部分 JSON 对象的代码。现在我们创建一个Java文件mainDecoding。 Java并将下面编写的代码保存在其中。

Java

import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
  
public class JavaJsonDecoding {
  
   public static void main(String[] args)
   {
       // Converting JSON data into Java String format
       String k = "{\"Full Name\":\"Ritu Sharma\",  
       \"Tution Fees\":65400.0, \"Roll No.\":1704310046}";
       Object file = JSONValue.parse(k);
         
       // In java JSONObject is used to create JSON object  
       JSONObject jsonObjectdecode = (JSONObject)file;
  
       // Converting into Java Data type
       // format From Json is the step of Decoding.
       String name = (String)jsonObjectdecode.get("Full Name");
       double fees = (Double)jsonObjectdecode.get("Tution Fees");
       long rollno = (Long)jsonObjectdecode.get("Roll No.");
       System.out.println(name + " " + fees + " " + rollno);
   }
}

输出 :

Ritu Sharma 65400.0 1704310046

注意:这里也可以使用列表或映射来完成Java JSON 编码。