http://www.cnblogs.com/jyan/articles/2544974.html

1.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

2.需要的类包:

  org.json.package,JSONObject

  org.apache.http.package,DefaultHttpClient

3.服务器端,我们使用grails提供数据服务,数据库使用mysql,以其中一张表Person(name,gender,title)为例,在Controller中提供person列表服务,其格式为JSON

  def index() {
def parg=params
if(params.data){
          //如果存在data参数,将该参数转换为JSONObject
          JSONObject json=new JSONObject(params.data)
def sqlinsert=new Sql(dataSource)
           //从JSONObject中获取数据并插入数据库
sqlinsert.executeInsert(" INSERT INTO person (name,gender,title) values (?,?,?)", [json.getString("name"),json.getString("gender"),json.getString("title")])
}
def sql= new Sql(dataSource)
       //获取Person列表,以JSON方式返回
def rows=sql.rows("select name,gender,title from person")
sql.close()
render rows as JSON
}

4 Android端

4.1从服务器端获取数据并显示

    public void doHttpGetJSON(View view) throws IOException, JSONException {

        DefaultHttpClient httpClient = new DefaultHttpClient();
//指定服务器端URL
HttpGet get = new HttpGet("http://10.4.30.228:8080/PersonForAndroid/person");
HttpResponse rsp = httpClient.execute(get);
//获取响应的实体
HttpEntity httpEntity = rsp.getEntity();
//将响应的实体转换为字符串
String jsonString = EntityUtils.toString(httpEntity);
//服务器端返回的数据格式为:[{"name":"Johnny","gender":"Male","title":"Programmer"},{"name":"Kevin","gender":"Male","title":"Manager"}]
//是一个JSON数组,因此使用JSONArray将字符串转换为JSONArray
//如果服务器端返回的是JSON字符串:{"name":"Johnny","gender":"Male","title":"Programmer"},则使用JSONObject jsonObject=new JSONObject(jsonString);
JSONArray jsonArray=new JSONArray(jsonString);
String resultsString="";
//遍历JSONArray,将结果输出
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String name = jsonObj.getString("name");
String gender = jsonObj.getString("gender");
String title = jsonObj.getString("title");
resultsString += title + " " + name + " is " + gender+"\r\n";
}
TextView getTextView = (TextView) findViewById(R.id.jsonGetTextView);
getTextView.setText(resultsString);
}

4.2向服务器提交JSON格式数据

    public void doHttpPostJSON(View view) throws IOException, JSONException {
//定义一个JSON,用于向服务器提交数据
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", getTextFromView(R.id.name))
.put("gender", getTextFromView(R.id.gender))
.put("title", getTextFromView(R.id.title));
String jsonString = jsonObj.toString();
//指定Post参数
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("data", jsonString)); DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://10.4.30.228:8080/PersonForAndroid/person");
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse rsp = httpClient.execute(post); HttpEntity httpEntity = rsp.getEntity();
String displayString = EntityUtils.toString(httpEntity); TextView getTextView = (TextView) findViewById(R.id.jsonPostTextView);
getTextView.setText(displayString);
}

Android 客户端和服务器 json交互的更多相关文章

  1. Android客户端与服务器

    就是普通的服务器端编程,还不用写界面,其实还比服务器编程简单一些.跟J2EE一样的服务器,你android这一方面只要用json或者gson直接拿数据,后台的话用tomcat接受请求操作数据,功能不复 ...

  2. Android客户端与服务器交互方式-小结

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json.要在Android手机客户端与pc服务器交互,需要 ...

  3. Android客户端与服务端交互之登陆示例

    Android客户端与服务端交互之登陆示例 今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台 ...

  4. Android客户端和服务器端数据交互

    网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单.逻辑清晰的交互例子,本篇博客介绍第四种: 一.服务器端: 代 ...

  5. android客户端向服务器发送请求中文乱码的问

    android客户端向服务器发送请求的时候,并将参数保存到数据库时遇到了中文乱码的问题: 解决方法: url = "http://xxxx.com/Orders/saveorder.html ...

  6. Android 客户端与服务器交互

    在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有 一:基于Http协议获取数据方法 ...

  7. Android客户端与服务器交互中的token

    学习Token Token是什么? Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Tok ...

  8. 使用HttpURLConnection实现在android客户端和服务器之间传递对象

    一般情况下,客户端和服务端的数据交互都是使用json和XML,相比于XML,json更加轻量级,并且省流量,但是,无论我们用json还是用xml,都需要我们先将数据封装成json字符串或者是一个xml ...

  9. Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

    转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...

随机推荐

  1. CRF条件随机场简介

    CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析.命名实体识别.词性标注等.在我看来,CRF就像一个反向的隐马尔可夫模型(H ...

  2. Xcode6.2创建Empty Application

    运行Xcode 6,创建一个Single View Application工程.   创建好后,把工程目录下的Main.storyboard和LaunchScreen.xib删除,扔进废纸篓.   打 ...

  3. KMP算法中next函数的理解

    首先要感谢http://blog.csdn.net/v_july_v/article/details/7041827以及http://blog.chinaunix.net/uid-27164517-i ...

  4. [流媒体]live555简介(转)

    live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现 了对多种音视频编码 ...

  5. Java中方法与数组

    1:方法(掌握) (1)方法:就是完成特定功能的代码块. 注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法. (2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参 ...

  6. Spark的编译

    由于Spark的运行环境的多样性,如可以运行在hadoop的yarn上,这样就必须要对Spark的源码进行编译.下面介绍一下Spark源码编译的详细步骤: 1.Spark的编译方式:编译的方式可以参考 ...

  7. poj1125(Floyd最短路)

    //Accepted 164 KB 0 ms //floyd #include <cstdio> #include <cstring> #include <iostrea ...

  8. js 中 setInterval 的返回值问题

    var i = 0; var timer = setInterval(function() { i++ console.log(i); //alert(1); }, 2000); alert( typ ...

  9. classPath

    问 spring mvc的web.xml中这个地方的classpath是什么意思? spring springmvc java swnuv 2015年09月25日提问 关注 5 关注 收藏 0 收藏, ...

  10. SVG 2D入门8 - 文档结构

    前面介绍了很多的基本元素,包括结构相关的组合和重用元素,这里先对SVG的文档结构中剩下的相关元素简单总结一下,然后继续向前领略SVG的其他特性. SVG文档的元素基本可以分为以下几类: 动画元素:an ...