JSON Array to Java objects

39,905

Solution 1

assuming your json string data is stored in variable called jsonStr:

String jsonStr = getJsonFromSomewhere();
Gson gson = new Gson();
Click clicks[] = gson.fromJson(jsonStr, Click[].class);

Solution 2

Check out the Gson API and some examples. I've put the links below!

String jsonString = //your json String
Gson gson = new Gson();
Type typeOfList = new TypeToken<List<Map<String, Integer>>>() {}.getType();
List<Map<String, Integer>> list = gson.fromJson(jsonString, typeOfMap);

List<Click> clicks = new ArrayList<Click>();
for(int i = 0; i < list.size(); i++) {
    int x = list.get(i).get("x");
    int y = list.get(i).get("y");
    clicks.add(new Click(x, y));
}

(http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html) (http://google-gson.googlecode.com/svn/tags/1.5/src/test/java/com/google/gson/functional/MapTest.java)

Share:
39,905

Related videos on Youtube

ProblemAnswerQue
Author by

ProblemAnswerQue

Updated on August 02, 2020

Comments

  • ProblemAnswerQue
    ProblemAnswerQue almost 4 years

    I need to parse a JSON file which looks like this:

    [
      {
        "y": 148, 
        "x": 155
      }, 
      {
        "y": 135, 
        "x": 148
      }, 
      {
        "y": 148, 
        "x": 154
      }
    ]
    

    And I want to put these X-coordinates and Y-coordinates into an JavaObject Click, that class looks like this:

    public class Click {
        int x;
        int y;
    
        public Click(int x, int y) {
            this.x = x;
            this.y = y;
        }
    
        public int getX() {
            return x;
        }
    
        public void setX(int x) {
            this.x = x;
        }
    
        public int getY() {
            return y;
        }
    
        public void setY(int y) {
            this.y = y;
        }
    }
    

    I have looked at gson because they say it is quit easy, but I don't get it how I can do it from my file.

  • Kostas Kryptos
    Kostas Kryptos over 9 years
    for Jackson to work you need to also have an empty constructor for your class
  • ProblemAnswerQue
    ProblemAnswerQue over 9 years
    yeah I know Jackson exists but gson seems more userfriendly and faster in it's use but I just don't get it, User.class will be Click.class, that i already knew same in gson for as far as I figured out
  • ProblemAnswerQue
    ProblemAnswerQue over 9 years
    now I have this: private static final String filePath = ".\\data.json"; BufferedReader br; Gson gson = new Gson(); Click click = gson.fromJson(br, Click.class); System.out.println(click); but it still says my json file has a wrong startingobject and ending object
  • haley
    haley over 9 years
    I'm not sure how BufferedReader works in that method. I didn't know you could do that. That might be why you're getting the error.
  • haley
    haley over 9 years
    Are you stuck on getting the json into a string?