Skip to content Skip to sidebar Skip to footer

How To Parse Json Parsing Using Gson In Android

I am using GSON for parse Json data. My Json data is below: { 'count': '12', 'colbreak': 1, 'name': 'unary rels', 'score': '9090', 'Words': [ {

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"