2016-10-19 8 views
0

に私は、そのフォーマットのようになりますJSONを解析しようとしています。ただし、ユーザー数は不明です。私がやりたい何解析JSONは、Java 2-Dアレイ

は、2次元配列

String[][] users = new String[USER_AMOUNT][2]; 

(user_nameとZIP_CODE 2)

で自分配列に、各ユーザーとそのデータを割り当てている方法はありますJSONの指定された形式でそれを行うには?

+1

の可能性のある重複した[JavaでJSONをパースする方法](http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) –

+0

:私はこれを行うためにOson libraryを使用しましたJacksonまたはGSONを使用 – HARDI

+0

簡単に答えるには、2Dまたは多次元配列を使用しないでください。 'User'クラスを作ります。次に、 'User []'を格納します。 –

答えて

0

はい、方法があります.Gsonライブラリを使用して同じことを達成できます。

まず、Jsonと同じフィールドを持つPOJO(Plain Old Java Object)を定義します。その後、

public class User { 

    private String user_name; 
    private String zip_code; 

    public String getZip_code() { 
     return zip_code; 
    } 

    public void setZip_code(String zip_code) { 
     this.zip_code = zip_code; 
    } 

    public String getUser_name() { 
     return user_name; 
    } 

    public void setUser_name(String user_name) { 
     this.user_name = user_name; 
    } 
} 

とドライバクラスを記述します。

import com.google.gson.Gson; 

public class JsonToJavaObjMapper { 

    public static void main(String[] args) { 
     String jsonString = "{\"user_name\":\"Azim\",\"zip_code\":null}"; 
     Gson gson = new Gson(); 
     User fromJson = gson.fromJson(jsonString, User.class); 
     System.out.println(fromJson.getUser_name() + " " + fromJson.getZip_code()); 
    } 
} 

は、あなたのクラスパスにgsonジャーを含めると、上記のクラスを実行します。

出力:

Azim null 

たぶん、コードのこの作品は、あなたに役立つだろう。

+0

'zipCode'と' userName'はJavaのより一般的な名前です。注釈を使用してPOJOマッピングを修正することができます –

+0

はい、私はあなたの意見に同意しますが、意図的に注釈を追加して答えを分かりやすくして初心者に理解しやすくなりました:) – Azim

+0

ありがとうございました! – Payton

0

String [] []ユーザーを本当に戻したい場合は、シリアライザまたはデシリアライザを使用してそれを達成する必要があります。

 String jsonString = "[{\"user_name\":\"Azim\",\"zip_code\":67890},{\"user_name\":\"Smith\",\"zip_code\":12345}]"; 

     String[][] users = oson.des(String[].class, (Object p) -> StringUtil.list2Array(((Map)p).values())) 
       .deserialize(jsonString, String[][].class); 

     String json = oson.serialize(users); 
     String expected = "[[\"Azim\",\"67890\"],[\"Smith\",\"12345\"]]"; 
     assertEquals(expected, json);