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

JavaのJSON-lib APIを使って型ヒントなしでBeanをXMLに変換する方法

JSON-libは、Java Bean、Map、配列、コレクションなどのオブジェクトをJSON形式でシリアライズ・デシリアライズするためのJavaライブラリです。このライブラリを使用すると、XMLSerializerクラスのsetTypeHintsEnabled()メソッドを呼び出すことで、型ヒント(タイプヒント)を含まない形でBeanをXMLに変換できます。

このメソッドは、JSONの型情報をXMLの属性として含めるかどうかを制御します。引数にfalseを渡すと型ヒントが無効化され、生成されるXMLには余計な型属性が付与されなくなります。これにより、よりシンプルでクリーンなXML出力が得られます。

構文

public void setTypeHintsEnabled(boolean typeHintsEnabled)

パラメータの説明

  • true:JSONの型情報をXMLの属性として出力します(デフォルトの動作)。
  • false:型情報を出力せず、要素名と値のみのシンプルなXMLを生成します。

コード例

以下は、Employeeクラスのオブジェクトを作成し、JSONに変換した後、型ヒントなしでXMLに出力するサンプルプログラムです。

import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;

public class ConvertBeanToXMLNoHintsTest {
    public static void main(String[] args) {
        Employee emp = new Employee("Krishna Vamsi", 115, 30, "Java");
        JSONObject jsonObj = JSONObject.fromObject(emp);
        System.out.println(jsonObj.toString(3)); // 整形してJSONを出力

        XMLSerializer xmlSerializer = new XMLSerializer();
        xmlSerializer.setTypeHintsEnabled(false); // 型ヒントを無効化
        String xml = xmlSerializer.write(jsonObj);
        System.out.println(xml);
    }

    public static class Employee {
        private String empName, empSkill;
        private int empId, age;

        public Employee(String empName, int empId, int age, String empSkill) {
            super();
            this.empName = empName;
            this.empId = empId;
            this.age = age;
            this.empSkill = empSkill;
        }

        public String getEmployeeName() {
            return empName;
        }

        public int getEmployeeId() {
            return empId;
        }

        public String getEmployeeSkill() {
            return empSkill;
        }

        public int getAge() {
            return age;
        }
    }
}

実行結果

まず、Beanから変換された整形済みのJSONが出力されます。

{
    "employeeName": "Krishna Vamsi",
    "employeeSkill": "Java",
    "employeeId": 115,
    "age": 30
}

続いて、setTypeHintsEnabled(false)を設定したXMLSerializerによって生成されたXMLです。ルート要素や各要素に型情報の属性が付いておらず、シンプルな構造になっていることが確認できます。

<?xml version="1.0" encoding="UTF-8"?>
<o>
    <age>30</age>
    <employeeId>115</employeeId>
    <employeeName>Krishna Vamsi</employeeName>
    <employeeSkill>Java</employeeSkill>
</o>

まとめ

JSON-libのXMLSerializerクラスでは、デフォルト設定のままだとXMLに「class」などの型ヒント属性が自動的に追加されます。外部システムとの連携などで不要な属性を避けたい場合は、setTypeHintsEnabled(false)を呼び出すだけで、型ヒントなしのクリーンなXMLを簡単に生成できます。

  1. JavaでXMLをJSON配列に変換する方法

    JSON(JavaScript Object Notation)は、軽量なデータ交換フォーマットであり、キーと値のペア形式でデータを表現します。Javaでは、org.json.XMLクラスを使用することで、XMLをJSON配列へ簡単に変換できます。このクラスが提供する静的メソッドXML.toJSONObject()を使えば、XML文字列をJSONObjectに変換することが可能です。構文public static JSONObject toJSONObject(java.lang.String string) throws JSONExceptionこのメソッドはXML形式の文字列を引数として

  2. JavaでCLOB型を文字列(String)に変換する方法をわかりやすく解説

    CLOB(Character Large Object)は、SQLの組み込みデータ型の一つで、大量のテキストデータを格納するために使用されます。このデータ型を利用すると、最大2,147,483,647文字までのデータを保存することが可能です。 JDBC APIのjava.sql.Clobインターフェースが、このCLOBデータ型を表現します。なお、JDBCにおけるClobオブジェクトはSQLロケーター(locator)を使って実装されているため、実際のデータそのものではなく、SQL CLOBへの論理ポインターを保持している点に注意してください。 MySQLデータベースでは、TINYTEXT、T