Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでJSONオブジェクトをエンコードする2つの方法をわかりやすく解説

JSONObjectとは

JSONObjectjava.util.HashMapのサブクラスで、要素の順序は保証されません。要素の順序を厳密に管理したい場合は、JSONValue.toJSONString(map)メソッドを使用するか、java.util.LinkedHashMapを実装することで対応できます。

ここでは、JSONオブジェクトをエンコードする2つの方法をコード例とともに紹介します。

事前準備:json-simpleライブラリの追加

org.json.simpleパッケージを使用するには、json-simpleライブラリが必要です。Mavenプロジェクトの場合は、pom.xmlに以下の依存関係を追加してください。

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

例1:HashMapからJSONObjectを生成する

import java.util.*;
import org.json.simple.JSONObject;

public class JSONEncodingTest {
    public static void main(String[] args) {
        Map<Object, Object> dataMap = new HashMap<Object, Object>();
        dataMap.put("Name", "Adithya");
        dataMap.put("Age", new Integer(25));
        dataMap.put("Salary", new Double(25000.00));
        dataMap.put("Employee Id", new Integer(115));
        dataMap.put("Company", "TutorialsPoint");
        JSONObject jsonObj = new JSONObject(dataMap);
        System.out.print("Encoding a JSON object: ");
        System.out.print(jsonObj);
    }
}

出力結果

Encoding a JSON object: {"Salary":25000.0,"Employee id":115,"Company":"TutorialsPoint","Age":25,"Name":"Adithya"}

この例では、Mapに格納したデータをそのままJSONObjectのコンストラクタに渡してJSONオブジェクトを生成しています。使用しているのがHashMapのため順序は保持されず、出力されるキーの並び順は実行環境によって異なる場合があります。

例2:writeJSONString()メソッドで出力する

import java.io.*;
import org.json.simple.*;

public class JSONEncodingTest1 {
    public static void main(String[] args) throws IOException {
        JSONObject obj = new JSONObject();
        obj.put("Name", "Jai");
        obj.put("Mobile_Number", new Integer(995998480));
        obj.put("Bank_Balance", new Double(50000.00));
        obj.put("Is_A_SelfEmployee", new Boolean(false));
        StringWriter out = new StringWriter();
        obj.writeJSONString(out);
        String jsonText = out.toString();
        System.out.print(jsonText);
    }
}

出力結果

{"Is_A_SelfEmployee":false,"Bank_Balance":50000.0,"Mobile_Number":995998480,"Name":"Jai"}

この例では、JSONObjectに直接put()でデータを追加し、writeJSONString()メソッドでWriterオブジェクトへ書き出しています。この方法を使えば、JSON文字列をファイルやネットワークストリームなどへ直接出力することも可能です。

まとめ

JavaでJSONオブジェクトをエンコードする方法は、主に次の2つがあります。

  • Map(HashMapなど)にデータを格納し、JSONObjectのコンストラクタに渡して生成する方法
  • JSONObjectに直接値を追加し、writeJSONString()で出力する方法

また、キーの順序を保持したJSON文字列が必要な場合は、HashMapの代わりにLinkedHashMapを使用してデータを構築するとよいでしょう。

  1. 【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)

    JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず

  2. JavaでJSONをパース(解析)する方法|org.json・Gson・JsonPathの使い方を解説

    このチュートリアルでは、JavaでJSONを解析(パース)する方法を、複数のライブラリの使い方とあわせて解説します。 JSONとは「JavaScript Object Notation」の略称で、JavaScriptのサブセットをベースとした軽量なデータ形式です。 データ交換フォーマットとして広く普及しており、Webプログラミングにおいて不可欠な技術となっています。本記事では、org.jsonライブラリを使ったJSONのパース方法を中心に紹介します。 まず基本をおさらいしましょう。JSONオブジェクトは「キーと値のペア」から構成される順序のない集合です。一方、JSON配列は値が順序付けて格納さ