如何将此JSON文件中的bio和value链接到我正在使用android studio的字符串
{
"Amber": [
{
"Info": {
"name": "Amber",
"bio": "Turkish-Cypriot",
"image": "null"
},
"Class": {
"Adorable": {
"name": "",
"link": ""
},
"IronAge": {
"name": "",
"link": ""
}
}
}
]
}我的java代码
private void parseResult_GetWebData(String result) {
try {
JSONObject response = new JSONObject(result);
JSONArray jsonArray = response.getJSONArray("Amber");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.optJSONObject(i);
JSONObject jsonArray1 = jsonObject.getJSONObject("Info");
JSONObject jsonArray2 = jsonObject.getJSONObject("Class");
String bio = jsonArray1.optString("bio");
String link = jsonArray2.optString("link");
}
} catch (JSONException e) {
e.printStackTrace();
}
}由于我的代码没有得到任何结果,我不知道到底在做什么工作。
发布于 2020-01-20 13:36:58
你应该使用数据模型,即标准的方式。
主POJO类
public class MyModel
{
private Amber[] Amber;
public Amber[] getAmber ()
{
return Amber;
}
public void setAmber (Amber[] Amber)
{
this.Amber = Amber;
}
@Override
public String toString()
{
return "[Amber = "+Amber+"]";
}
}Amber.java
public class Amber
{
private Class Class;
private Info Info;
//Can not getClass name of this method becuase getClass method is define in Object class so make it just getClassi or anything else.
public Class getClassi ()
{
return Class;
}
public void setClass (Class Class)
{
this.Class = Class;
}
public Info getInfo ()
{
return Info;
}
public void setInfo (Info Info)
{
this.Info = Info;
}
@Override
public String toString()
{
return "Amber [Class = "+Class+", Info = "+Info+"]";
}
}Class.java
public class Class
{
private Adorable Adorable;
private IronAge IronAge;
public Adorable getAdorable ()
{
return Adorable;
}
public void setAdorable (Adorable Adorable)
{
this.Adorable = Adorable;
}
public IronAge getIronAge ()
{
return IronAge;
}
public void setIronAge (IronAge IronAge)
{
this.IronAge = IronAge;
}
@Override
public String toString()
{
return "Info [Adorable = "+Adorable+", IronAge = "+IronAge+"]";
}
}IronAge.java
public class IronAge
{
private String name;
private String link;
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getLink ()
{
return link;
}
public void setLink (String link)
{
this.link = link;
}
@Override
public String toString()
{
return "IronAge [name = "+name+", link = "+link+"]";
}
}Adorable.java
public class Adorable
{
private String name;
private String link;
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getLink ()
{
return link;
}
public void setLink (String link)
{
this.link = link;
}
@Override
public String toString()
{
return "Adorable [name = "+name+", link = "+link+"]";
}
}Info.java
public class Info
{
private String image;
private String name;
private String bio;
public String getImage ()
{
return image;
}
public void setImage (String image)
{
this.image = image;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getBio ()
{
return bio;
}
public void setBio (String bio)
{
this.bio = bio;
}
@Override
public String toString()
{
return " class [image = "+image+", name = "+name+", bio = "+bio+"]";
}
}现在使用GSON将JSON数据解析为模型类。
这是GSON的Gradle依赖项
dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
}public void parse(String jsonString){
Gson gson = new Gson();
MyModel model = gson.fromJson(jsonString, MyModel.class);
for(Amber amber : model.getAmber()){
//TO GET Links
String link1 = amber.getClassi().getAdorable().getLink();
String link2 = amber.getClassi().getIronAge().getLink();
}
}您可以使用this将JSON转换为pojo模型类。
发布于 2020-01-20 12:13:42
Class是包含多个JSONObject's的JSOnObject,因此在获得Class之后,您需要遍历每个JSONObject以获得link值
JSONObject jsonObject2 = jsonObject.getJSONObject("Class");
Iterator<String> itr = jsonObject2.keys();
while(itr.hasNext()) {
JSONObject innerObj = jsonObject2.getJSONObject(itr.next());
String link = innerObj.optString("link");
}发布于 2020-01-20 12:19:37
请检查以上代码的更新响应。在我的系统中,我成功地执行了代码,没有崩溃和值输出。

。
try {
String json= "{\n" +
" \"Amber\": [\n" +
" {\n" +
" \"Info\": {\n" +
" \"name\": \"Amber\",\n" +
" \"bio\": \"Turkish-Cypriot\",\n" +
" \"image\": \"null\"\n" +
" },\n" +
" \"Class\": {\n" +
" \"Adorable\": {\n" +
" \"name\": \"\",\n" +
" \"link\": \"\"\n" +
" },\n" +
" \"IronAge\": {\n" +
" \"name\": \"\",\n" +
" \"link\": \"\"\n" +
" }\n" +
" }\n" +
" }\n" +
" ]\n" +
"}";
JSONObject jsonObject = new JSONObject(json);
JSONArray jsonArrayAmber= jsonObject.getJSONArray("Amber");
for(int i=0; i<jsonArrayAmber.length(); i++) {
JSONObject jsonObject1= jsonArrayAmber.getJSONObject(i).getJSONObject("Info");
if(jsonObject1!=null) {
String bioValue= jsonObject1.getString("bio");
System.out.println("jsonTest "+bioValue);
}
JSONObject jsonObject2= jsonArrayAmber.getJSONObject(i).getJSONObject("Class");
if(jsonObject2!=null) {
JSONObject jsonObjectAdorable = jsonObject2.getJSONObject("Adorable");
if(jsonObjectAdorable!=null) {
String linkAdorable = jsonObjectAdorable.getString("link");
System.out.println("jsonTest "+linkAdorable);
}
JSONObject jsonObjectIronAge = jsonObject2.getJSONObject("IronAge");
if(jsonObjectIronAge!=null) {
String IronAgeLink = jsonObjectIronAge.getString("link");
System.out.println("jsonTest "+ IronAgeLink);
}
}
}
} catch (Exception e){
e.printStackTrace();
}https://stackoverflow.com/questions/59816857
复制相似问题