导航:首页 > 操作系统 > android解析多层json

android解析多层json

发布时间:2023-05-21 15:22:13

android 解析json二维数组

javascript的语法存取和解析。你例子中有明显错误,js的数组和对象不分,php也不可能生成这样的json。
按javascript的语法存取和解析。学会js,按js的规矩办。

php下可用$a=json_decode()解码这个串,然后按js的规矩
echo $a[0]['uname'];显示York
echo $a[0]['tag']['2'];显示北京
可以用foreach逐层遍历,.和PHP的数组同样的。

㈡ Android 中解析 JSON

JSON( JavaScript Object Notation ) 是一种轻量级的数据交换格式。易于阅读和编写,同时也易于机器解析和生成。

JSON 建构于两种结构:

JSON 具有以下这些格式:

参考: Android 中 解析 JSON

Android 提供类四种不同的类来操作 JSON 数据。这些类是 JSONArray、JSONObject、JSONStringer 和 JSONTokenizer

为了解析 JSON 对象,须先创建一个 JSONObject 类的对象,需要传入需解析的字符串 JSONObject root = new JSONObject(candyJson); 然后根据 JSONObject 对象提供方法以及数据类型解析对应 json 数据。下表展示一些 JSONObiect 提供的方法

示例:

㈢ Android怎么解析这个json



importjava.util.Iterator;
importjava.util.Map.Entry;
importjava.util.Set;

importcom.google.gson.JsonArray;
importcom.google.gson.JsonElement;
importcom.google.gson.JsonObject;
importcom.google.gson.JsonParser;

publicclassJU
{
publicstaticvoidmain(String[]args)
{
Stringjson=
"{"showapi_res_code":0,"showapi_res_error":"","showapi_res_body":{"ret_code":0,"basic":{"explains":["n.技术;工艺;术语"]}}}";
JsonParserparser=newJsonParser();
JsonObjectobj=(JsonObject)parser.parse(json);
System.out.println(obj);
dir(obj);
}

privatestaticvoiddir(Objectobj)
{
if(objinstanceofJsonObject)
{
JsonObjectobject=(JsonObject)obj;
Set<Entry<String,JsonElement>>entry=object.entrySet();
Iterator<Entry<String,JsonElement>>it=entry.iterator();
while(it.hasNext())
{
Entry<String,JsonElement>elem=it.next();
Stringkey=elem.getKey();
JsonObjectoob;
try
{
oob=(JsonObject)elem.getValue();
System.out.println(key+"--->"+oob);
dir(oob);
}
catch(Exceptione)
{
JsonElementelement=elem.getValue();
System.out.println(key+"--->"+element);
dir(element);
}
}
}
elseif(objinstanceofJsonArray)
{
JsonArrayarray=(JsonArray)obj;
for(inti=0;i<array.size();i++)
{
JsonElementelement=array.get(i);
System.out.print(element+"");
dir(element);
}
}
}
}

㈣ Android 解析 嵌套的JsonArray 这个具体该怎么解析呢

String json = "";
try {
JSONArray arr = new JSONArray(json);
for (int i=0; i<arr.length(); i++) {
JSONObject obj = arr.getJSONObject(i);
String secondId = obj.getString("secondId");
String lessonpId = obj.getString("lessonpId");
String secondTitle = obj.getString("secondTitle");
JSONArray recordArr = obj.getJSONArray("record");
for (int j=0; j<recordArr.length(); j++) {
JSONObject recordObj = recordArr.getJSONObject(j);
// String secondId2 = recordObj.getString("secondId");
String threeTitle = recordObj.getString("threeTitle");
String threeId = recordObj.getString("threeId");
}
}
} catch (JSONException e) {
e.printStackTrace();
}

㈤ android开发用gson解析json字符串,如果键不是固定值怎么办

这样没试过,不过我认为可以将json中键值不固定的存在JSONArray中访问时奇数位保存键,偶数保存值;也可以只传斗早值;还有就是多层嵌套(例如:假设字母表示键,数字表示值:a:2,b:5替换成空好雀i:a,ii:2,iii:b,iiii:5这意思就是将键与值都作为值传过来)。要么每一次变化都写一个类来与之对应,不同袜岩的时候用不同的类的实例接收

㈥ Android怎么解析json,json文本用链接给出来

额,是json数据格式 返回的带有html标签的文本。

㈦ Android jason数据的解析

1. Jason不知道是个什么东西,是Json吧?

2. URL里面不能包含这样的参数吧,因该是访问URL返回的值是个Json串。

//Gson用法
Gsongson=newGson();
gson.fromJson(string,clazz);

有你的代码我写了这么一个类:

classStudent{

//注意变量名称与Json串里面的关键字必须相同
privateintid;
privateStringname;
private拍神intage;

/**
高扰*注意必须为所有的变量加上getter和setter,Gson会使用注入方式为变量赋值
*这里我就省略了
*/
}

//使用方法如下:
Stringresponse;//访问URL返回结果Json串
Gsongson=newGson();
Objectobject=gson.fromJson(response,Student.class戚贺旦);
Studentstudent=(Student)object;

即使这样,希望能够帮到你!

㈧ Android使用Gson解析网络接口返回的Json数据

Gson挺好用的,可以把json串直接解析成bean对象,或者把对象渗凯转换成json串,数据解析的时岩州候先创建Gson对象

GsonmGson丛枣唤=newGson();

然后再把json串解析成bean对象

Beanbean=mGson.fromJson(json,Bean.class);


如果想把对象转成json串可以用gson的toJson方法

Stringjson=mGson.toJson();

纯手打,满意请采纳

㈨ android 在服务器端生成json格式数据,在客户端怎么解析

因为这次要从服务器端得到Json数据,并且通过解析之后把解析后的数据显示在Android客户端中,首先部署服务器端代码(直接使用Jsp/Servlet):
构造的Json数据如下:
[{"name":"张三","address":"北京","age":20},{"name":"李四","address":"上海","age":30},{"name":"王五","address":"深圳","age":35}]

[一]服务器端(Person.java省略):
①:数据构造JsonService.java
public class JsonService {
public static List<Person> getListPerson() {
List<Person> mLists = new ArrayList<Person>();
mLists.add(new Person("张三", "北京", 20));
mLists.add(new Person("李四", "上海", 30));
mLists.add(new Person("王五", "深圳", 35));
return mLists;
}

②:Servlet的代码(包括构造Json数据,没有使用Json数据转换方法)JsonServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
List<Person> persons = JsonService.getListPerson();
StringBuffer sb = new StringBuffer();
sb.append('[');
for (Person person : persons) {
sb.append('{').append("\"name\":").append("\""+person.getName()+"\"").append(","); sb.append("\"address\":").append("\""+person.getAddress()+"\"").append(",");
sb.append("\"age\":").append(person.getAge());
sb.append('}').append(",");
}
sb.deleteCharAt(sb.length() - 1);
sb.append(']');
out.write(new String(sb));
out.flush();
out.close();
}

③:部署到Tomact 浏览器输入http://localhost/JsonWeb/JsonServlet直接访问结果如下:
[{"name":"张三","address":"北京","age":20},{"name":"李四","address":"上海","age":30},{"name":"王五","address":"深圳","age":35}]

至此服务器端代码编码完成,下面进行客户端代码编写; (二)客户端(Person类,和展示数据的布局文件因为简单省去) ①:获取服务器端的Json数据并且解析的工具类JsonParse.java 必要的需要导入的包省去
public class JsonParse {
/**
* 解析Json数据
*
* @param urlPath
* @return mlists
* @throws Exception
*/
public static List<Person> getListPerson(String urlPath) throws Exception {
List<Person> mlists = new ArrayList<Person>();
byte[] data = readParse(urlPath);
JSONArray array = new JSONArray(new String(data));
for (int i = 0; i < array.length(); i++) {
JSONObject item = array.getJSONObject(i);
String name = item.getString("name");
String address = item.getString("address");
int age = item.getInt("age");
mlists.add(new Person(name, address, age));
}
return mlists;
}
/**
* 从指定的url中获取字节数组
*
* @param urlPath
* @return 字节数组
* @throws Exception
*/
public static byte[] readParse(String urlPath) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int len = 0;
URL url = new URL(urlPath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream inStream = conn.getInputStream();
while ((len = inStream.read(data)) != -1) {
outStream.write(data, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
}

②:主Activity类
public class MainActivity extends Activity {
private Button mButton;
private ListView mListView;
//使用IP不能使用localhost或者127.0.0.1,因为android模拟器默认绑定这个IP,这里应该访问局域网IP
private static final String urlPath = "http://10.16.31.207/JsonWeb/JsonServlet";
private static final String TAG = "MainActivity";
private List<Person> persons;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) findViewById(R.id.button1);
mListView = (ListView) findViewById(R.id.listView1);
mButton.setOnClickListener(new MyOnClickListener());
}

private class MyOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
try {
// 得到Json解析成功之后数据
persons = JsonParse.getListPerson(urlPath);
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < persons.size(); i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("name", persons.get(i).getName());
map.put("address", persons.get(i).getAddress());
map.put("age", persons.get(i).getAge());
data.add(map);
}
//初始化适配器,并且绑定数据
SimpleAdapter _Adapter = new SimpleAdapter(MainActivity.this,
data, R.layout.listview_item, new String[] { "name",
"address", "age" }, new int[] { R.id.textView1,
R.id.textView2, R.id.textView3 });
mListView.setAdapter(_Adapter);
} catch (Exception e) {
Toast.makeText(MainActivity.this, "解析失败", 2000).show();
Log.i(TAG, e.toString());

}
}
}

㈩ android 怎么用json解析接口(本人新手,请大手帮忙解决下)

fastjson.jar这个jar包可以方便的帮你解析json格式数据:
你可以参考下我这塌饥斗段代码:
public Object parseMap_Sub(String str) {
try {

Map<String, Object> map = JSON.parseObject(str);
JSONArray jsonArray = (JSONArray) map.get("data");
List<NearMap_Info> list_detial = new ArrayList<NearMap_Info>();
for (Object o : jsonArray) {
Map<String, String> map_1 = (Map<String, String>) o;
NearMap_Info audio_info = new NearMap_Info();
//团磨audio_info.setSize((String) map.get("size"));
audio_info.setFlag(map_1.get("flag"));
audio_info.setTitle(map_1.get("title"));
audio_info.setUrl(map_1.get("url"));
audio_info.setType(map_1.get("type"));
audio_info.setId(map_1.get("id"肢答));
audio_info.setImg(map_1.get("img"));
list_detial.add(audio_info);
}
ro.result = true;
ro.obj = list_detial;
} catch (Exception e) {
e.printStackTrace();
ro.result = false;
}
return ro;
}

阅读全文

与android解析多层json相关的资料

热点内容
amdlinux显卡安装 浏览:564
泰海科技云服务器如何卸载 浏览:122
有密码打开excel加密 浏览:818
java生成重复字符 浏览:280
串口服务器有什么用 浏览:328
linux安装red5 浏览:295
单片机中断时入口地址作用 浏览:148
程序员的工作是重复性的吗 浏览:67
照片怎么转换成pdf 浏览:133
女生学编程好吗 浏览:240
目前绝地求生怎么看服务器地址大全 浏览:825
论人类不平等的起源pdf 浏览:436
压缩机螺杆加工 浏览:369
怎么把网站服务器设置在境外 浏览:164
单片机编程取反 浏览:897
51单片机课程设计课题 浏览:900
手机淘宝登录怎么加密码 浏览:486
linux快捷方式图标 浏览:38
阳光车险的app叫什么名字 浏览:462
购买单片机的器件时需要给商家啥 浏览:535