Part 2 – Nested Objects

[embedyt] https://www.youtube.com/watch?v=4F1d6ELxF1c[/embedyt]
Links & DependenciesAddress.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 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;

public class Employee {
    @SerializedName("first_name")
    private String mFirstName;
    @SerializedName("age")
    private int mAge;
    @SerializedName("mail")
    private String mMail;
    @SerializedName("address")
    private Address mAddress;

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

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

import com.google.gson.Gson;

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");

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


        String json = "{\"address\":{\"city\":\"Berlin\",\"country\":\"Germany\"},\"age\":30,\"first_name\":\"John\",\"mail\":\"john@gmail.com\"}";
        Employee employee = gson.fromJson(json, Employee.class);

    }
}
{
  "address": {
    "city": "Berlin",
    "country": "Germany"
  },
  "age": 30,
  "first_name": "John",
  "mail": "john@gmail.com"
}