2016-07-28 21 views
1

私はJson to Javaクラスを解析するタスクを持っています。jackson json toオブジェクト解析

Jsonの断片私は構文解析しようとしており、問題は木構造のようなものです。

ここで重要な点は、parameterValueは文字列、またはパラメータ名と値のペアの別の配列です。

私はここでの問題は、私はここにレスポンスクラスを記述することができますかわからないので、それはジャクソンによって解析され、オートかもしれないということである

Response response = mapper.readValue(jsonObjstring, Response.class); 

ジャクソンマッパーを使用したいと思います。それが可能であれば。

JSONは:

[{ 
    "parameterName" : "name", 
    "parameterValue" : "value" 
}, { 
    "parameterName" : "apnRecord", 
    "parameterValue" : [{ 
    "parameterName" : "name", 
    "parameterValue" : "value" 
    }, { 
    "parameterName" : "name", 
    "parameterValue" : "value" 
    }, { 
    "parameterName" : "name", 
    "parameterValue" : "value" 
    }, { 
    "parameterName" : "name", 
    "parameterValue" : "value" 
    }, { 
    "parameterName" : "name", 
    "parameterValue" : "value" 
    }, { 
    "parameterName" : "name", 
    "parameterValue" : "value" 
    }] 
}] 
+0

は、あなたのコードスニペットを共有します'json'を投げるのではなく、 – Amolb

答えて

2

あなたはJavaのPOJOマッパにこのオンラインJSONを試すことができ、それは必要な結果を生成し、それが何度も私のために便利です。

http://pojo.sodhanalibrary.com/

それを試してみて、あなたが任意のより多くの困難があなたが受け取る完全なJSONを提供直面した場合、我々は他のいくつかのことをうまくすることができます。

1

フィールドとgetters/settersを含むPOJO Response.javaクラスを作成し、標準のコンストラクタとフィールドを含むコンストラクタを作成し、toStringメソッド()を作成します。

@JsonProperty 
private String parameterName; 

そして最後に、あなたのコンストラクタf.e.と

@JsonAutoDetect 
@JsonSerialize 
public class Response implements Serializable 

は、あなたのフィールド:注釈が

のようなクラスを定義して、私はあなたの例を示していますそれが値ではなく、別のではない場合 - この

@JsonCreator 
public Response(@JsonProperty("parameterName") String parameterName) { 
    this.parameterName = parameterName; 
} 
+0

ですが、値が文字列か配列かどうかのように、このpojoはどのように見えるはずですか? –

+0

tomasの場合、このパラメータ名は文字列です。parameterValueのような変数をもっと多く表示したい場合は、次のように定義してください。arraylistに解析する方法を尋ねる場合は、このようにしてください - > ArrayList images = jsonMapper.readValue json、jsonMapper.getTypeFactory()。constructCollectionType(ArrayList。クラス、Image.class)); – kaya

0

ように私はそれが最終的な値であるか、ArrayListにときにジャクソンmaperがLinkedHashMapEntyに(Object)を解析し

private List<List<Object>> resultParameters;

としてそれを定義しています値のリスト。

これは閉じることができます。

0
package test; 

import java.io.IOException; 

import com.fasterxml.jackson.core.JsonProcessingException; 
import com.fasterxml.jackson.databind.JsonNode; 
import com.fasterxml.jackson.databind.ObjectMapper; 

public class Test { 

    public static void main(String[] args) { 

     String readJsonAsString = "[{\r\n \"parameterName\" : \"name\",\r\n \"parameterValue\" : \"value\"\r\n}, {\r\n \"parameterName\" : \"apnRecord\",\r\n \"parameterValue\" : [{\r\n  \"parameterName\" : \"name\",\r\n  \"parameterValue\" : \"value\"\r\n }, {\r\n  \"parameterName\" : \"name\",\r\n  \"parameterValue\" : \"value\"\r\n }, {\r\n  \"parameterName\" : \"name\",\r\n  \"parameterValue\" : \"value\"\r\n }, {\r\n  \"parameterName\" : \"name\",\r\n  \"parameterValue\" : \"value\"\r\n }, {\r\n  \"parameterName\" : \"name\",\r\n  \"parameterValue\" : \"value\"\r\n }, {\r\n  \"parameterName\" : \"name\",\r\n  \"parameterValue\" : \"value\"\r\n }]\r\n}]"; 

     try { 

      ObjectMapper mapper = new ObjectMapper(); 
      JsonNode jsonNodes = mapper.readTree(readJsonAsString.toString()); 
      for (JsonNode jsonNode : jsonNodes) { 
       System.out.println(jsonNode.get("parameterName")); 
      } 


     } catch (JsonProcessingException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

最初にjsonを文字列形式に変換してからObjectMapperでツリー構造に変換する必要があります。あなたが3瓶を使用する必要があり、このため

: ジャクソン注釈-2.3.5.jar ジャクソンコア-2.3.5.jar ジャクソンデータバインド-2.3.5.jarを

関連する問題