How To Parse Json Parsing Using Gson In Android
Solution 1:
you could try reading the gson value like this:
try {
AssetManagerassetManager= getAssets();
InputStreamims= assetManager.open("file.txt");
Gsongson=newGson();
Readerreader=newInputStreamReader(ims);
GsonParsegsonObj= gson.fromJson(reader, GsonParse.class);
}catch(IOException e) {
e.printStackTrace();
}
Assuming that you are just receiving this one block and not a list. And also this data is currently in a file in the assets folder. You can change it to the stream you want to read it from.
The class you use should look like:
GsonParse.class
publicclassGsonParse {
@SerializedName("count")
privateString count;
@SerializedName("colbreak")
privateString colbreak;
@SerializedName("name")
privateString name;
@SerializedName("score")
privateString score;
@SerializedName("Words")
privateList<Words> mWords = newArrayList<Words>();
@SerializedName("seek")
privateString seek;
publicStringgetCount() {
return count;
}
publicvoidsetCount(String count) {
this.count = count;
}
publicStringgetColbreak() {
return colbreak;
}
publicvoidsetColbreak(String colbreak) {
this.colbreak = colbreak;
}
privateStringgetName() {
return name;
}
privatevoidsetName(String name) {
this.name = name;
}
publicStringgetScore() {
return score;
}
publicvoidsetScore(String score) {
this.score = score;
}
publicList<Words> getmWords() {
return mWords;
}
publicvoidsetmWords(List<Words> mWords) {
this.mWords = mWords;
}
publicStringgetSeek() {
return seek;
}
publicvoidsetSeek(String seek) {
this.seek = seek;
}
}
Words.class
publicclassWords {
@SerializedName(value ="count")
privateString count;
@SerializedName(value="word")
privateString word;
@SerializedName(value="score")
privateString name;
@SerializedName(value="Words")
privateString words;
@SerializedName(value="seek")
privateString seek;
publicStringgetCount() {
return count;
}
publicvoidsetCount(String count) {
this.count = count;
}
publicStringgetWord() {
return word;
}
publicvoidsetWord(String word) {
this.word = word;
}
publicStringgetName() {
return name;
}
publicvoidsetName(String name) {
this.name = name;
}
publicStringgetWords() {
return words;
}
publicvoidsetWords(String words) {
this.words = words;
}
publicStringgetSeek() {
return seek;
}
publicvoidsetSeek(String seek) {
this.seek = seek;
}
}
there is a parameter missing in words.class, you could add it .
GSON does not directly support UTF-8 characters. so when receiving the response using http, you will have to convert that to utf-8 form in the response of http itself.
you could try using:
StringjsonString=newGson().toJson(objectToEncode);
byte[] utf8JsonString = jsonString.getBytes("UTF8");
responseToClient.write(utf8JsonString, 0, utf8JsonString.Length);
Solution 2:
Hello use below gradle lib
compile'com.google.code.gson:gson:2.2.4'
Json Class
import java.util.List;
publicclassGsonParse{
/**
* count : 12
* colbreak : 1
* name : unary rels
* score : 9090
* Words : [{"count":6,"word":"prp_għaċ-","name":"prp_għaċ-","score":9.1,"Words":"kol","seek":2231297}]
* seek : 0
*/privateString count;
private int colbreak;
privateString name;
privateString score;
private int seek;
/**
* count : 6
* word : prp_għaċ-
* name : prp_għaċ-
* score : 9.1
* Words : kol
* seek : 2231297
*/privateList<WordsBean> Words;
publicStringgetCount() {
return count;
}
publicvoidsetCount(String count) {
this.count = count;
}
public int getColbreak() {
return colbreak;
}
publicvoidsetColbreak(int colbreak) {
this.colbreak = colbreak;
}
publicStringgetName() {
return name;
}
publicvoidsetName(String name) {
this.name = name;
}
publicStringgetScore() {
return score;
}
publicvoidsetScore(String score) {
this.score = score;
}
public int getSeek() {
return seek;
}
publicvoidsetSeek(int seek) {
this.seek = seek;
}
publicList<WordsBean> getWords() {
returnWords;
}
publicvoidsetWords(List<WordsBean> Words) {
this.Words = Words;
}
publicstaticclassWordsBean {
private int count;
privateString word;
privateString name;
private double score;
privateStringWords;
private int seek;
public int getCount() {
return count;
}
publicvoidsetCount(int count) {
this.count = count;
}
publicStringgetWord() {
return word;
}
publicvoidsetWord(String word) {
this.word = word;
}
publicStringgetName() {
return name;
}
publicvoidsetName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
publicvoidsetScore(double score) {
this.score = score;
}
publicStringgetWords() {
returnWords;
}
publicvoidsetWords(String Words) {
this.Words = Words;
}
public int getSeek() {
return seek;
}
publicvoidsetSeek(int seek) {
this.seek = seek;
}
}
}
Calling API put response in below code and Retrive Data
GsonParse gsonparse = gson.fromJson(response, GsonParse.class);
//gsonparse.getWords() // It will returns list of Words//Also do loop and get more data using data
gsonparse.getColbreak();
gsonparse.getSeek();
for (GsonParse.WordsBean data:gsonparse.getWords())
{
data.getName();
}
hope it will help to you..
Solution 3:
Replace
@SerializedName("name")
public String count;
with
@SerializedName("name")public String name;
I guess the issue is you are using public String count;
for both @SerializedName("count")
and @SerializedName("name")
Thanks.
Solution 4:
Try this:
JSONArrayjsonarray= jsonObject.getJSONArray("responseData");
TypelistType=newTypeToken<ArrayList<AllUsers>>(){}.getType();
List<AllUsers> allUserses =
newGsonBuilder().create().fromJson(jsonarray.toString(), listType);
for(AllUsers user: allUserses){
allUsersDao.insertOrReplace(user);
}
Solution 5:
There are many thing missing in your code..
Please look at below code and try this code..
import java.util.List;
publicclassGsonParse {
publicGsonParse() {
}
publicString count = "";
publicString colbreak = "";
publicString name = "";
publicString score = "";
public int seek = 0;
List<WordsData> Words;
publicStringgetCount() {
return count;
}
publicvoidsetCount(String count) {
this.count = count;
}
publicStringgetColbreak() {
return colbreak;
}
publicvoidsetColbreak(String colbreak) {
this.colbreak = colbreak;
}
publicStringgetName() {
return name;
}
publicvoidsetName(String name) {
this.name = name;
}
publicStringgetScore() {
return score;
}
publicvoidsetScore(String score) {
this.score = score;
}
public int getSeek() {
return seek;
}
publicvoidsetSeek(int seek) {
this.seek = seek;
}
publicList<WordsData> getWords() {
returnWords;
}
publicvoidsetWords(List<WordsData> words) {
Words = words;
}
publicclassWordsData {
publicWordsData() {
}
public int count = 0;
publicString word = "";
publicString name = "";
public double score = 0.0;
publicStringWords = "";
public int seek = 0;
public int getCount() {
return count;
}
publicvoidsetCount(int count) {
this.count = count;
}
publicStringgetWord() {
return word;
}
publicvoidsetWord(String word) {
this.word = word;
}
publicStringgetName() {
return name;
}
publicvoidsetName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
publicvoidsetScore(double score) {
this.score = score;
}
publicStringgetWords() {
returnWords;
}
publicvoidsetWords(String words) {
Words = words;
}
public int getSeek() {
return seek;
}
publicvoidsetSeek(int seek) {
this.seek = seek;
}
}
}
For more detail look at this example
Post a Comment for "How To Parse Json Parsing Using Gson In Android"