如何在Android中读取JSON父标记
我需要你帮我做以下事情。我想读取JSON文件的父标记。下面是我的JSON文件内容如何在Android中读取JSON父标记,android,json,arrays,Android,Json,Arrays,我需要你帮我做以下事情。我想读取JSON文件的父标记。下面是我的JSON文件内容 { "ebook": [ {"id":"1","name":"book1"}, {"id":"2","name":"book2"} ], "ebrochure": [ {"id":"1","name":"brochure1"}, {"id":"2","nam
{
"ebook":
[
{"id":"1","name":"book1"},
{"id":"2","name":"book2"}
],
"ebrochure":
[
{"id":"1","name":"brochure1"},
{"id":"2","name":"brochure2"}
],
"emenu":
[
{"id":"1","name":"menu1"},
{"id":"2","name":"menu2"}
]
}
我只需要找出JSON中有多少父标记以及它们是什么。根据我给出的JSON文件,答案应该是3(有3个父JSON标记)和“ebooks、ebrochure、emeu”(父标记的名称)。有什么JAVA类我可以完成我的工作吗
我知道如何读取完整的JSON文件。首先,我们使用getJSONArray()
方法将JSON传递给JSONObject
,然后将子对象传递给JSONArray
但是getJSONArray()
方法需要父标记的名称。根据我的例子,它可以是电子书、ebrochure或emenu。假设在某种情况下,我们无法看到JSON的内容,只能访问URL。在这种情况下,我需要找出有多少父标签以及它们的名称
那是我的问题。提前感谢您的帮助:-)您应该阅读以下文档:
基本上,
names()
(在Android中)可以用来获取字段名数组,然后将其用作键。这里我不做一个完整的例子,因为如果你自己尝试的话,你会学到更好。你应该仔细阅读文档
public static String Fechingdata(String response){
Id1.clear();
Id2.clear();
Id3.clear();
name1.clear();
try{
JSONArray jsonarray = new JSONArray("["+response+"]");
JSONObject jsonobject = jsonarray.getJSONObject(0);
parseForResponse1(jsonobject.getString("ebook"),1);
parseForResponse2(jsonobject.getString("ebrochure"),2);
parseForResponse3(jsonobject.getString("emenu"),3);
return response;
}catch (Exception e) {
return "\"" + "Access Denied" + "\"";
}
}
private static void parseForResponse1(String res,int i) {
try{
JSONArray jsonarray1 = new JSONArray(res);
Log.d("jsarry1",""+jsonarray1.length());
for(int i=0;i<jsonarray1.length();i++){
JSONObject jsonobject = jsonarray1.getJSONObject(i);
if(i ==1){
Id1.add(jsonobject.getString("id"));
name1.add(jsonobject.getString("id"));
}
if(i ==2){
Id2.add(jsonobject.getString("id"));
name2.add(jsonobject.getString("id"));
}
if(i ==2){
Id3.add(jsonobject.getString("id"));
name3.add(jsonobject.getString("id"));
}
}
}
catch (Exception e) {
System.out.println(e.toString());
}
}
基本上,names()
(在Android中)可以用来获取字段名数组,然后将其用作键。这里我不做一个完整的例子,因为如果你自己尝试,你会学到更好。公共静态字符串Fechingdata(字符串响应){
public static String Fechingdata(String response){
Id1.clear();
Id2.clear();
Id3.clear();
name1.clear();
try{
JSONArray jsonarray = new JSONArray("["+response+"]");
JSONObject jsonobject = jsonarray.getJSONObject(0);
parseForResponse1(jsonobject.getString("ebook"),1);
parseForResponse2(jsonobject.getString("ebrochure"),2);
parseForResponse3(jsonobject.getString("emenu"),3);
return response;
}catch (Exception e) {
return "\"" + "Access Denied" + "\"";
}
}
private static void parseForResponse1(String res,int i) {
try{
JSONArray jsonarray1 = new JSONArray(res);
Log.d("jsarry1",""+jsonarray1.length());
for(int i=0;i<jsonarray1.length();i++){
JSONObject jsonobject = jsonarray1.getJSONObject(i);
if(i ==1){
Id1.add(jsonobject.getString("id"));
name1.add(jsonobject.getString("id"));
}
if(i ==2){
Id2.add(jsonobject.getString("id"));
name2.add(jsonobject.getString("id"));
}
if(i ==2){
Id3.add(jsonobject.getString("id"));
name3.add(jsonobject.getString("id"));
}
}
}
catch (Exception e) {
System.out.println(e.toString());
}
}
Id1.clear();
Id2.clear();
Id3.clear();
name1.clear();
试一试{
JSONArray JSONArray=新JSONArray(“[”+响应+“]”);
JSONObject JSONObject=jsonarray.getJSONObject(0);
parseForResponse1(jsonobject.getString(“电子书”),1);
parseForResponse2(jsonobject.getString(“ebrochure”),2);
parseForResponse3(jsonobject.getString(“emenu”),3);
返回响应;
}捕获(例外e){
返回“\”+“访问被拒绝”+“\”;
}
}
私有静态void parseForResponse1(字符串res,int i){
试一试{
JSONArray jsonarray1=新JSONArray(res);
Log.d(“jsarry1”,“”+jsonarray1.length());
对于(int i=0;i公共静态字符串Fechingdata(字符串响应){
Id1.clear();
Id2.clear();
Id3.clear();
name1.clear();
试一试{
JSONArray JSONArray=新JSONArray(“[”+响应+“]”);
JSONObject JSONObject=jsonarray.getJSONObject(0);
parseForResponse1(jsonobject.getString(“电子书”),1);
parseForResponse2(jsonobject.getString(“ebrochure”),2);
parseForResponse3(jsonobject.getString(“emenu”),3);
返回响应;
}捕获(例外e){
返回“\”+“访问被拒绝”+“\”;
}
}
私有静态void parseForResponse1(字符串res,int i){
试一试{
JSONArray jsonarray1=新JSONArray(res);
Log.d(“jsarry1”,“”+jsonarray1.length());
for(int i=0;iJSONObject jobj=newjsonobject(您的Json字符串);
JSONArray jarray=jobj.names();
for(int i=0;iJSONObject jobj=newjsonobject(您的Json字符串);
JSONArray jarray=jobj.names();
对于(inti=0;iSo,JSONObject上有哪些方法可能有用?(顶级JSONObject有3个键/值对。如何通过编程找到这一点?)这没有意义:在某些情况下,我们看不到JSON的内容,只有访问URL,才能获取内容。当您获取内容时,JSONObject(URLText)。length()
会告诉您“父项”的编号标记:实际上,它们是匿名父对象的子标记。JSONObject.names()
和JSONObject.optJSONArray()
也可能对您有所帮助。@KenY-N是的,如果我在问题中没有提到假设词,这是没有意义的。:-)因为这个假设词背后有一个巨大的故事。如果我告诉summary;在实现Android应用程序后,JSON可以通过添加新的父标记来更改。根据父标记,我显示了一些UI元素。所以我不想每次JSON要用新的父标记编辑时都更改我的代码。如果我可以通过编程识别fy有多少父标记和名称,然后我可以根据这些加载UI。我想现在你知道我为什么写这样的问题了。:-)那么,在JSONObject上有哪些方法可能有用?(顶级JSONObject有3个键/值对。如何通过编程发现这一点?)这没有意义:在某些情况下,我们看不到JSON的内容,只有访问URL,才能获取内容。当您获取内容时,JSONObject(URLText)。length()
会告诉您“父项”的编号标记:实际上,它们是匿名父对象的子标记。JSONObject.names()
和JSONObject.optJSONArray()
也可能对您有所帮助。@KenY-N是的,如果我在问题中没有提到假设词,这是没有意义的。:-)因为这个假设词背后有一个巨大的故事。如果我告诉summary;在实现Android应用程序后,JSON可以通过添加新的父标记来更改。根据父标记,我显示了一些UI元素。所以我不想每次JSON要用新的父标记编辑时都更改我的代码。如果我可以通过编程识别fy有多少个父标签和名称,然后我可以根据这些加载UI。我想现在你知道我为什么写这样的问题了。:-getNames(JSONObject jo)
但是上面的字符串中“JSONObject”在哪里?@TusharDhoot Android似乎没有