web-dev-qa-db-ja.com

POJOをJSONに、またはその逆に変換する方法は?

POJOオブジェクトをJSONオブジェクトに、またはその逆に変換するために利用可能なJava APIがあるかどうかを知りたい.

49
Mariah

はい、json.orgがあります。 http://www.json.org/Java/index.html をご覧ください

[編集]単純なJavaクラスは次のようになっていると想像してください:

public class Person {

    private String name;
    private Integer age;

    public String getName() { return this.name; }
    public void setName( String name ) { this.name = name; }

    public Integer getAge() { return this.age; }
    public void setAge( Integer age ) { this.age = age; }

}

したがって、JSonオブジェクトに変換するには、非常に簡単です。このような:

import org.json.JSONObject;

public class JsonTest {

    public static void main( String[] args ) {
        Person person = new Person();
        person.setName( "Person Name" );
        person.setAge( 333 );

        JSONObject jsonObj = new JSONObject( person );
        System.out.println( jsonObj );
    }

}

それが役に立てば幸い。

[編集]他の例があります。この場合はジャクソンを使用しています: https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-Java/

Maven:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.1</version>
</dependency>

そして、最新/最高のバージョンを見つけるためのリンク(下):

https://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22com.fasterxml.jackson.core%22%20AND%20a%3A%22jackson-databind%22 =

45
bruno.zambiazi

また、pomファイルで以下の依存関係とプラグインを使用することもできます。mavenを使用します。これらを使用すると、JSONスキーマに従ってPOJOを生成し、次に以下のコードを使用して、gson.toJson(Object src)またはその逆のパラメーターとして指定されたsrcオブジェクトを介してリクエストJSONオブジェクトを設定できます。以下のコードを見てください:

Gson gson = new GsonBuilder().create();
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());

Gson gson2 = new Gson();
Error expectederr = gson2.fromJson(payloadStr, Error.class);

そして、Mavenの設定:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>1.7.1</version>
</dependency>

<plugin>
    <groupId>com.googlecode.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>0.3.7</version>
    <configuration>
        <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
        <targetPackage>com.example.types</targetPackage>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>
18
akshaymani

Jackson 2を知っている場合は、 mkyong.com に変換する方法についての素晴らしいチュートリアルがありますJava JSONに対するオブジェクト、およびその逆。以下のコードスニペットは、そのチュートリアルから取られています。

Convert Java JSONへのオブジェクト、writeValue(...)

_ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();

//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);

//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);
_

JSONをJava object、readValue(...)に変換する

_ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";

//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);

//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);

//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);
_

ジャクソン2依存関係:

_<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>
_

完全なチュートリアルについては、上記のリンクにアクセスしてください。

17
Bilesh Ganguly