Java 用GSON解释和读取JSON
我很难理解这个JSON字符串Java 用GSON解释和读取JSON,java,json,gson,Java,Json,Gson,我很难理解这个JSON字符串 { "results":[ { "user":{ "gender":"female", "name":{ "title":"miss", "first":"taylor", "last":"anderson"
{
"results":[
{
"user":{
"gender":"female",
"name":{
"title":"miss",
"first":"taylor",
"last":"anderson"
},
"location":{
"street":"3645 dogwood ave",
"city":"roseburg",
"state":"new hampshire",
"zip":"20963"
},
"email":"taylor.anderson49@example.com",
"username":"heavyduck595",
"password":"liverpool",
"salt":"UK`o;9a_",
"md5":"6c8db0305b4591d8d9820d9f8edfd162",
"sha1":"906df4c09f3a87899666cb57bf974bd9b1950ea6",
"sha256":"3b12f5e51688578f845bef8ae1750d3e263c2010691010a80ce632a6b2323c03",
"registered":"1359027425",
"dob":"16243995",
"phone":"(934)-888-7068",
"cell":"(727)-467-8384",
"SSN":"697-20-6143",
"picture":"http://api.randomuser.me/0.3/portraits/women/30.jpg"
},
"seed":"5eaf02877746c7e",
"version":"0.3"
}
]
}
这是我第一次真正使用JSON,并希望尝试对其进行适当的解释。这是我迄今为止的代码:
static class Results{
String results;
}
static class User{
String gender;
String name;
String location;
List<Results> items;
}
private static String readUrl(String urlString) throws Exception {
BufferedReader reader = null;
try {
URL url = new URL(urlString);
reader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer();
int read;
char[] chars = new char[1024];
while ((read = reader.read(chars)) != -1)
buffer.append(chars, 0, read);
return buffer.toString();
} finally {
if (reader != null)
reader.close();
}
}
public void larry() throws Exception{
String json = readUrl("http://api.randomuser.me/");
System.out.println(json);
Gson gson = new Gson();
User page = gson.fromJson(json, User.class);
System.out.println(page.name);
for (Results item : page.items)
System.out.println(" " + item.results);
}
静态类结果{
字符串结果;
}
静态类用户{
字符串性别;
字符串名;
字符串位置;
清单项目;
}
私有静态字符串readUrl(字符串urlString)引发异常{
BufferedReader reader=null;
试一试{
URL=新URL(URL字符串);
reader=newbufferedReader(newInputStreamReader(url.openStream());
StringBuffer=新的StringBuffer();
int-read;
char[]chars=新字符[1024];
while((read=reader.read(chars))!=-1)
追加(字符,0,读取);
返回buffer.toString();
}最后{
if(读卡器!=null)
reader.close();
}
}
public void()引发异常{
字符串json=readUrl(“http://api.randomuser.me/");
System.out.println(json);
Gson Gson=新的Gson();
User page=gson.fromJson(json,User.class);
System.out.println(第页名称);
用于(结果项:第页。项)
System.out.println(“+item.results”);
}
JSON并没有什么特别复杂的地方,也并没有把它映射到您自己的Java类。你只需要了解基本结构
JSON是一个只有一个字段的对象<代码>结果。这就是{}
的意思:
{ "results": ... }
该字段包含一个数组。这就是[]
{ "results": [ ... ] }
该数组包含另一个对象(可能一个数组中有多个对象,但您发布的JSON只有一个)。该对象有三个字段,其中一个(“用户”)保存另一个对象,另外两个为字符串
要将其映射到您自己的类,只需使它们看起来像JSON:
class JsonResult {
List<Result> results; // JSON arrays map to Java Lists
}
class Result {
User user;
String seed;
String version;
}
class User {
String gender;
Name name;
// and so on ...
}
class Name {
String title;
String first;
String last;
}
从这里,您可以使用字段名访问JSON结构:
JsonObject root = element.getAsJsonObject();
JsonArray array = root.getAsJsonArray("results");
通过访问JSON结构,您可以访问任何您想要的内容。其他用于打印缩进的内容,您可以使用“\t”作为制表符,而不是“.等多个空格”。在执行任何其他操作之前,请访问JSON.org,花5分钟时间学习JSON语法——它非常简单,易于理解。然后,在使用诸如GSON之类的工具直接生成自定义Java对象之前,使用一个“干净”的JSON解析器将JSON解析为映射和列表,并学习如何处理这些映射和列表。那么,GSON等人的复杂性就更容易理解了。(谷歌的“JSON在线解析器”——有几种在线工具可以检查JSON字符串的语法并对其进行格式化,使其更易于阅读。)@Hot Licks谢谢!那会有很大帮助。
JsonObject root = element.getAsJsonObject();
JsonArray array = root.getAsJsonArray("results");