Part 3 – Arrays & Lists

[embedyt] https://www.youtube.com/watch?v=xbo1G02c2VM[/embedyt]
Links & DependenciesFamilyMember.javaAddress.javaEmployee.javaMainActivity.javaemployee.json

Library on GitHub with installation instructions:

github.com/google/gson

package com.codinginflow.gsonexample;

import com.google.gson.annotations.SerializedName;

public class FamilyMember {
    @SerializedName("role")
    private String mRole;
    @SerializedName("age")
    private int mAge;

    public FamilyMember(String role, int age) {
        mRole = role;
        mAge = age;
    }
}
package com.codinginflow.gsonexample;

import com.google.gson.annotations.SerializedName;

public class Address {
    @SerializedName("country")
    private String mCountry;
    @SerializedName("city")
    private String mCity;

    public Address(String country, String city) {
        mCountry = country;
        mCity = city;
    }
}
package com.codinginflow.gsonexample;

import com.google.gson.annotations.SerializedName;

import java.util.List;

public class Employee {
    @SerializedName("first_name")
    private String mFirstName;
    @SerializedName("age")
    private int mAge;
    @SerializedName("mail")
    private String mMail;
    @SerializedName("address")
    private Address mAddress;
    @SerializedName("family")
    private List<FamilyMember> mFamily;

    public Employee(String firstName, int age, String mail, Address address, List<FamilyMember> family) {
        mFirstName = firstName;
        mAge = age;
        mMail = mail;
        mAddress = address;
        mFamily = family;
    }
}
package com.codinginflow.gsonexample;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Gson gson = new Gson();

        /*
        Address address = new Address("Germany", "Berlin");

        List<FamilyMember> family = new ArrayList<>();
        family.add(new FamilyMember("Wife", 30));
        family.add(new FamilyMember("Daughter", 5));

        Employee employee = new Employee("John", 30, "john@gmail.com", address, family);
        String json = gson.toJson(family);
        */


        String json = "[{\"age\":30,\"role\":\"Wife\"},{\"age\":5,\"role\":\"Daughter\"}]";

        Type familyType = new TypeToken<ArrayList<FamilyMember>>() {}.getType();
        ArrayList<FamilyMember> family = gson.fromJson(json, familyType);

    }
}
{
  "address": {
    "city": "Berlin",
    "country": "Germany"
  },
  "age": 30,
  "family": [
    {
      "age": 30,
      "role": "Wife"
    },
    {
      "age": 5,
      "role": "Daughter"
    }
  ],
  "first_name": "John",
  "mail": "john@gmail.com"
}