1.要在客户端实现对Json对象的解析,首先我们在清单文件加好权限:可以上网的权限,注意,在此之时,也一定要看看设备有没有联网,就是说,要上网权限,手机也要同时联网。
<uses-permission android:name="android.permission.INTERNET"/>
2.建立一个工具类去实现并处理一些东西,如:Http去获取InputStream,将InputStream转换成对应的JsonString,然后在将其封装成一个javaBean类传给Activitiy前台显示
package com.example.json_demo; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.json.JSONException; import org.json.JSONObject; import com.example.domain.Person; public class HttpUtils { public HttpUtils() { // TODO Auto-generated constructor stub } public static String GetJsonString(String urlstr) { //通过Http协议去得到对应InputStream String Jsonstring = ""; try { URL url = new URL(urlstr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(3000); conn.setRequestMethod("GET"); conn.setDoInput(true); InputStream input = conn.getInputStream(); int code = conn.getResponseCode(); System.out.println("-->>response code" + code); //如果说这个连接成功,就将input变成一个JsonString, //一般来说对应的JsonString是 {‘Key’:‘Value’} if (code == 200) { Jsonstring = changeInputStreamToString(input); System.out.println("--》JsonString" + Jsonstring); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Jsonstring; } private static String changeInputStreamToString(InputStream input) { // 通过 byteArrayoutputStream 写入byte然后转换成string类型 String jsonstr = ""; ByteArrayOutputStream byteout = new ByteArrayOutputStream(); byte[] by = new byte[4 * 1024]; int len = 0; try { while (len != -1) { byteout.write(by, 0, len); len = input.read(by); } jsonstr = new String(byteout.toByteArray()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return jsonstr; } // 通过JsonStrng得到对应Json 的对象 public static Person getPersonObject(String key, String JsonStr) { Person person = new Person(); try { // 将怎么个大的String变成一个 JSON 对象 JSONObject jsonObject = new JSONObject(JsonStr); // 取其中的key后面的变成value 后的 Json对象 JSONObject personPobject = jsonObject.getJSONObject(key); //将 Json中的对象的值,转换成JavaBean的对象的属性值 person.setId(personPobject.getInt("id")); person.setAge(personPobject.getInt("age")); person.setName(personPobject.getString("name")); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return person; } } Person 类:
package com.example.domain; public class Person { private int id; private String name; private String address; private int age; public Person(int id, String name, String address, int age) { super(); this.id = id; this.name = name; this.address = address; this.age = age; } public Person() { // TODO Auto-generated constructor stub } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", address=" + address + ", age=" + age + "]"; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
主要的Activity
package com.example.json_demo; import com.example.domain.Person; import android.location.GpsStatus.Listener; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends ActionBarActivity { private Runnable run; private Button button1, button2, button3, button4; private String str = ""; private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { // 新的线程去实现对应的方法 switch (v.getId()) { case R.id.Button: run = new Runnable() { // 通过子线程去获取到Jsson public void run() { String path = "http://192.168.1.4:8080/BackWen/servlet/JsonAction?action_flag=person"; str = HttpUtils.GetJsonString(path); Person person = HttpUtils.getPersonObject("person", str); System.out.println("--> Person" + person.getAge()); } }; Thread mythread = new Thread(run); mythread.start(); System.out.println(str); break; case R.id.Button1: break; case R.id.Button2: break; case R.id.Button3: break; } } }; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化各个组件 button1 = (Button) findViewById(R.id.Button); button2 = (Button) findViewById(R.id.Button1); button3 = (Button) findViewById(R.id.Button2); button4 = (Button) findViewById(R.id.Button3); //添加监听 button1.setOnClickListener(listener); button2.setOnClickListener(listener); button3.setOnClickListener(listener); button4.setOnClickListener(listener); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
最后就是对应得布局,很简单
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.json_demo.MainActivity" > <Button android:id="@+id/Button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="解析Json object" />
相关推荐
本示例主要讲解如何使用JSON进行数据传输以及解析,同时涉及到Android客户端和JSP服务端的交互。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。以下...
1. **JSON基本结构**:JSON数据由键值对构成,即对象(Object),用花括号{}包围;数组(Array)由逗号分隔的值组成,用方括号[]包围。值可以是字符串(String)、数字(Number)、布尔值(Boolean)、null、对象或...
在"Jason关于jason解析的实例"中,我们可以深入探讨以下几个关键知识点: 1. **JSON的基本结构**:JSON的数据结构主要由对象(Object)和数组(Array)组成。对象是键值对的集合,用花括号{}包围,键与值之间用冒号...
总之,iOS Jason鬼脸解析工具是面向JSON处理的一款实用软件,无论是在iOS还是Android开发中,都能提供便捷的文件生成和查看功能。对于mac用户,它提供了本地化的解决方案,简化了JSON数据的管理,使得数据交互变得...
这套“安卓解析Jason数据的DEMO”提供了如何在Android应用程序中处理JSON数据的实例,这对于理解和实践JSON解析至关重要。下面我们将深入探讨这个主题。 一、JSON基础 JSON是一种独立于语言的数据表示格式,它基于...
"Jason解析和生成工具类"指的是一个编程工具,它提供了对JSON数据进行解析和生成的函数或类库。这样的工具通常包含以下功能: 1. **解析JSON**:将JSON格式的字符串转换为程序内部的数据结构,如对象或数组。例如,...
在iOS开发中,Jason是一种流行的轻量级JSON解析库,它允许开发者快速、高效地将JSON数据转换为Swift对象。本文将深入探讨Jason库在iOS应用中的使用,以及其核心特性、优势和如何集成到项目中。 JSON(JavaScript ...
"Jason鬼脸mac版"就是这样一个专为Mac用户设计的顶级JSON解析工具,它以其强大的功能和友好的用户界面赢得了“最好用”的美誉。 Jason鬼脸(Jason2.app)主要特点包括: 1. **直观展示**:Jason鬼脸提供了清晰的树...
Newtonsoft.Json的核心功能是将.NET对象转换为JSON字符串(序列化)以及将JSON字符串解析回.NET对象(反序列化)。这极大地简化了与JSON格式的数据交互。例如: ```csharp // 序列化 var obj = new { Name = "John...
根据提供的文件信息,本文将详细解析Android中JSON数据的处理方式。主要分为两大部分:第一部分涉及用户信息的解析;第二部分则关注日历事件列表的解析。 ### 一、用户信息的JSON解析 #### 1. JSON字符串结构 首先...
source insight4.0最舒服护眼的配色方案,本人花了一天时间调试出来的,xml文件直接load configuration即可
这篇博客文章,标题为“xStream学习xml,JASON,JAVA对象转换”,显然会探讨如何利用XStream来处理这两种数据格式。 XStream的核心功能在于其简单易用的API,可以将Java对象直接序列化成XML或JSON字符串,同时也能...
总之,这个项目涵盖了Android应用开发的多个核心方面,包括网络请求、JSON解析、地图服务集成、UI设计以及生命周期管理等,对于学习Android开发和百度地图API的使用具有很高的参考价值。通过深入理解和实践这些知识...
7. **错误处理和调试**:在调用API和处理JSON过程中,PB开发者需要考虑错误处理,包括网络错误、JSON解析错误等,同时利用PB的调试工具进行问题排查。 通过这些知识点,PB开发者能够构建起与JSON数据源的有效交互,...
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 1、需要的网络JSON数据 2、数据实现类 package chenglong.activitytest.pengintohospital.entity; import org.json....
在Android开发中,调用Web服务来...总的来说,Android调用Web服务获取JSON对象涉及网络请求、JSON解析以及在Android应用中的数据处理。理解这些概念并熟练掌握相关技术,对于开发能与服务器交互的Android应用至关重要。
开发中遇到的复杂JSON,用TypeToken来进行处理:(当然还有第二种解析方式,请查看http://blog.csdn.net/jason_996/article/details/78039799) 处理方法: 1,先将接口返回的JSON,用gson.tojson(map)方法,将...
以上就是关于objc中使用POST请求获取并解析JSON数据的详细说明,希望对你有所帮助。在实际开发中,你可能还会遇到如网络状态检测、异步处理、数据缓存等问题,需要根据具体需求进行处理。记得在编码过程中遵循最佳...