2017-10-27 10 views
0
{ 
    "type": "TestType", 
    "schema": { 
     "type": "object", 
     "properties": { 
      "field1": { 
       "format": "date", 
       "label": "field 1", 
       "type": "string" 
      }, 
      "field2": { 
       "format": "date", 
       "label": "field 2", 
       "type": "string" 
      } 
     }, 
     "required": [], 
     "additionalProperties": false 
    } 
} 

こんにちは、私はJSONスキーマを初めて使っています.JSONスキーマの上にマッピングするJavaモデルを定義する方法を知りたいだけです。定義からのフィールド名Java - JSONスキーマからすべてのフィールド名を取得する方法

だから、私はJSONスキーマを解析し、次のように返したいことを意味します

[field1, field2] 

注意をフィールドリストが自動であることを、JSONスキーマ、FIELD3、FIELD4に複数のフィールドを追加することができ...

答えて

2

List

3.convert List

Arrayにで JSONObject

2.saveに1.convertはこれを試してみてください。

public void getKey(String response) { 
    List<String> keyList = new ArrayList<String>(); 
    try { 
     JSONObject jsonObject = new JSONObject(response); 
     JSONObject schema = jsonObject.getJSONObject("schema"); 
     JSONObject properties = schema.getJSONObject("properties"); 
     Iterator iterator = properties.keys(); 
     while (iterator.hasNext()) { 
      String key = iterator.next().toString(); 
      keyList.add(key); 
     } 
     String[] arr = (String[]) keyList.toArray(new String[keyList.size()]); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 
+0

あなたが提供している配列( 'new String [keyList.size()]')のため、キャストする必要はありません – Lino

+0

ありがとうございます。 – KeLiuyue

+0

ありがとう、それは動作します。 – Tony

1

jsonは、varという名前の文字列変数に含まれているものとします。 org.jsonを以下のコードに使用してください。

JSONObject jObj=new JSONObject(var); 
ArrayList arr=new ArrayList(); 

for (Object keyObj: jObj.keySet()) 
{ 
    String key = (String)keyObject; 
    arr.add(key);   
} 

これだけです。

mavenを使って作業している人にorg.jsonパッケージの依存関係を追加しました!

<dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20160810</version> 
</dependency> 
+0

OPは、そうでない場合は、「フィールド1」と「フィールド2」 – user2864740

+2

私は彼が唯一properties' '内のオブジェクトのキーを必要だと思いますを見つけるために、構造に求める/再帰する必要があります。 –

+0

何がvarですか?そのコードはすべてのキーをリストします。 jObjはすでにスキーマのインスタンスですか? OPにはスキーマしかありません。 –

関連する問題