Gson fromjson示例
时间:2020-02-23 14:41:23 来源:igfitidea点击:
在本教程中,我们将看到关于Gson fromjson example.we已在上一篇文章中看到Simple Gson示例。
Gson fromjson方法用于将JSON字符串或者JSONObject或者读取器转换为相应对象。
我们可以通过GSON页面读取关于FROMJSON方法的各种变体。
下面示例演示Gson fromjson方法。
读取simple JSON字符串
我们可以使用FROMJSON(String JSON,Classoft)方法来读取简单的JSON字符串。
让我们说你有下面的国家程序。
package org.igi.theitroad;
public class Country {
int id;
String countryName;
long population;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
public long getPopulation() {
return population;
}
public void setPopulation(long population) {
this.population = population;
}
@Override
public String toString() {
return "Country [id=" + id + ", countryName=" + countryName + ", population=" + population + "]";
}
}
创建一个名为"simplegsonmain"的类
package org.igi.theitroad;
import com.google.gson.Gson;
public class SimpleGsonMain {
public static void main(String[] args) {
String jsonString="{'id'=1,countryNasme='Netherlands',population=20000}";
Gson gson=new Gson();
Country country=gson.fromJson(jsonString, Country.class);
System.out.println(country.toString());
}
}
运行上面的程序时,我们将得到以下输出。
Country [id=1, countryName=null, population=20000]
阅读JSON数组到列表
假设我们需要从文件中读取下面的JSON字符串。
[
{
"id":1,
"countryName":"Netherlands",
"population":20000
},
{
"id":2,
"countryName":"Nepal",
"population":12000
},
{
"id":3,
"countryName":"Bhutan",
"population":6000
},
{
"id":4,
"countryName":"China",
"population":30000
}
]
我们需要将以上json数组转换为列表<country>我们将无法使用以下代码进行。
List<Country> listOfCountries=gson.fromJson(jsonString, ArrayList.class);
上面的代码不起作用。
如果对象是参数化类型类型,则需要使用类型来转换它。
因此,我们可以使用FROMJSON(REVERER JSON,Typeoft)读取以上JSON文件。
package org.igi.theitroad;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonReadFileToListMain {
public static void main(String[] args) {
Reader reader;
try {
reader = new FileReader("/Users/apple/Desktop/Countries.json");
Gson gson=new Gson();
//Usinf fromJson(reader,type)
List<Country> countryList=gson.fromJson(reader,new TypeToken<List<Country>>(){}.getType());
System.out.println("=======================");
System.out.println("List of Countries are:");
System.out.println("=======================");
for (Country country : countryList) {
System.out.println(country);
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
运行上面的程序时,我们将得到以下输出:
======================= List of Countries are: ======================= Country [id=1, countryName=Netherlands, population=20000] Country [id=2, countryName=Nepal, population=12000] Country [id=3, countryName=Bhutan, population=6000] Country [id=4, countryName=China, population=30000]
阅读JSON字符串并将其转换为映射
让我们说我们有平普通的GSON字符串,我们希望将它放在地图中。
我们可以简单地使用FROMJSON(String JSON,Typeoft)并将字符串转换为如下映射:
package org.igi.theitroad;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonFromJsonToMapMain {
public static void main(String args[])
{
Gson gson=new Gson();
String counrtyCapitalJson="{'Netherlands':'Delhi','Nepal':'Kathmandu','China':'Beijing','Bhutan':'Thimphu'}";
Map<String,String> map=gson.fromJson(counrtyCapitalJson,new TypeToken<Map<String,String>>(){}.getType());
for(String key:map.keySet())
{
System.out.println(map.get(key)+" is capital of "+key);
}
}
}
运行上面的程序时,我们将得到以下输出:
Delhi is capital of Netherlands Kathmandu is capital of Nepal Beijing is capital of China Thimphu is capital of Bhutan

