2016-12-05 18 views
-3

でJSONからクラスを作成し、私が使用しています:はGson

Gson gson = new Gson(); 
return gson.fromJson(jsonstr,cls); 

jsonstrは次のとおりです。

{"title": "ttl","data": "dta"} 

そして、CLSは、次のとおりです。

public class GSONTest { 

public String title; 
public String data; 

public String getTitle() { 
    return title; 
} 

public String getData() { 
    return data; 
} 

}

しかし、私ともっと複雑なものにする、ここで私のjsonの例です:

{ 
    "Some1": { 
    "data": "dta", 
    "title": "ttl" 
    }, 
    "Some3": { 
    "data": "dta2", 
    "title": "ttl2" 
    } 
} 

このタイプのjsonでは、どのようにクラスを表示する必要がありますか?

+1

あなたは '地図<文字列、GSONTest>を含む別のクラスの' [?JSONからJavaクラスを生成](HTTPの – Blackbelt

+0

可能な複製を必要とする:// stackoverflowの.com/questions/1957406/generate-java-class-from-json) – Nithinlal

答えて

-2

You may see the working here in screen shot
例{

@SerializedName("Some1") 
@Expose 
private Some1 some1; 
@SerializedName("Some3") 
@Expose 
private Some3 some3; 


public Some1 getSome1() { 
    return some1; 
} 

public void setSome1(Some1 some1) { 
    this.some1 = some1; 
} 


public Some3 getSome3() { 
    return some3; 
} 


public void setSome3(Some3 some3) { 
    this.some3 = some3; 
} 

} 

---------------------------------- -com.example.Some1.java ----------------

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Some1 { 

    @SerializedName("data") 
    @Expose 
    private String data; 
    @SerializedName("title") 
    @Expose 
    private String title; 

public String getData() { 
    return data; 
} 


public void setData(String data) { 
    this.data = data; 
} 


public String getTitle() { 
    return title; 
} 


public void setTitle(String title) { 
    this.title = title; 
} 

} 

------------------- ---------------- com.example.Some3.java ----------------

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Some3 { 

@SerializedName("data") 
@Expose 
private String data; 
@SerializedName("title") 
@Expose 
private String title; 

public String getData() { 
return data; 
} 


public void setData(String data) { 
this.data = data; 
} 


public String getTitle() { 
return title; 
} 


public void setTitle(String title) { 
this.title = title; 
} 

} 

これはあなたのための活動コードです、楽しんでください!あなたはまた、link

+0

あなた自身で答えが分からない場合は投票しないでください。これは実行可能な解決策です。 –

+1

いいえ、そうではありません。OPはすでに内側のjsonを解析するpojoを持っています。 – Blackbelt

+0

これは私の編集された答えがこの{"title": "ttl"、 "data": "dta"} JSNのための思考クラスの前にJAXコードを投稿する必要がありますので参考にしてください。 –

-1

あなたのクラスは、この

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Example { 

@SerializedName("Some1") 
@Expose 
private Some1 some1; 
@SerializedName("Some3") 
@Expose 
private Some3 some3; 


public Some1 getSome1() { 
return some1; 
} 

public void setSome1(Some1 some1) { 
this.some1 = some1; 
} 

public Some3 getSome3() { 
return some3; 
} 

public void setSome3(Some3 some3) { 
this.some3 = some3; 
}} 

次Some1.class

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Some1 { 

@SerializedName("data") 
@Expose 
private String data; 
@SerializedName("title") 
@Expose 
private String title; 


public String getData() { 
return data; 
} 

public void setData(String data) { 
this.data = data; 
} 


public String getTitle() { 
return title; 
} 


public void setTitle(String title) { 
this.title = title; 
} 

} 

次Some3.class

のようなものであるクラスを生成するには、このウェブサイトを使用することができます

public class MainActivity extends AppCompatActivity { 

String json = "{\n" + 
     " \"Some1\": {\n" + 
     " \"data\": \"dta\",\n" + 
     " \"title\": \"ttl\"\n" + 
     " },\n" + 
     " \"Some3\": {\n" + 
     " \"data\": \"dta2\",\n" + 
     " \"title\": \"ttl2\"\n" + 
     " }\n" + 
     "}"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Example mExample = new Gson().fromJson(json, Example.class); 

    Toast.makeText(this, mExample.toString(), Toast.LENGTH_SHORT).show(); 
} 
} 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Some3 { 

@SerializedName("data") 
@Expose 
private String data; 
@SerializedName("title") 
@Expose 
private String title; 

/** 
* 
* @return 
* The data 
*/ 
public String getData() { 
return data; 
} 

/** 
* 
* @param data 
* The data 
*/ 
public void setData(String data) { 
this.data = data; 
} 

/** 
* 
* @return 
* The title 
*/ 
public String getTitle() { 
return title; 
} 

/** 
* 
* @param title 
* The title 
*/ 
public void setTitle(String title) { 
this.title = title; 
} 

} 
0
Type type = new TypeToken<Map<String, GSONTest>>(){}.getType(); 
    Map<String, GSONTest> gsonTestMap = gson.fromJson(jsonstr, type); 
0

あなたがあなたのJSONのルートのためのJavaクラスを作成する必要がありますので、すべてのJSONオブジェクトは、Javaのクラスのようなものである見ることができるように、このような何か:あなたは、私が使用していることがわかり

public class GSONTest { 

    GSONTest2 element1; 
    GSONTest2 element2; 

    //constructor, getters and setters here 

} 

public class GSONTest2{ 
    String element1; //This will stored "dta and dta2" 
    String element2; //This will stored "ttl1 and ttl2" 
    //constructor, getters and setters here 

}

:それはあなたのJSONの「LEVEL2」を保存することができますので、別のオブジェクトこのクラスは、このようなものになりますあなたがGSONを呼び出しているとき

だからあなただけ行う必要があります。

Gson gson = new Gson(); 
return gson.fromJson(jsonstr,GSONTest.class);