android的json解析方式,Android解析JSON方式

JSON数据格式的定义:

JSON的全称是:JavaScript Object Notation,是一种轻量级的数据交换格式。它构建于两种结构:

1、"名称/值" 对的集合(a collection of name / value pairs)。不同的语言中,它被理解为对象(Object),记录(Record),结构(struct),字典(Dictionary),哈希表(HashTable),有键列表(Keyed list),或者关联数组(Associative array)。

2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

JSON数据格式的特点:

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

如:

{

"name":"jackson",

"age":100

}

稍微复杂一点的情况,数组是值的有序集合,一个数组以“[”(左中括号)开始,以"]"(右中括号)结束。值之间使用","(逗号)分隔。

如:

{

"studengs":

[

{"name": "jackson", "age": 100},

{"name": "michael", "age": 51},

]

}

首先,我们搭建一个服务器的工程:JsonProject这个项目,工程目录结构:

3a459480b546739f968b30a4a8f6ed9a.png

源代码:

Person.java

package com.json.domain;

public class Person {

private int id;

private String name;

private String address;

public Person() {

super();

}

public Person(int id, String name, String addrss) {

super();

this.id=id;

this.name=name;

this.address=addrss;

}

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;

}

@Override

public String toString() {

return "Person [addrss=" + address + ",id=" + id + ",name=" + name

+ "]";

}

}

JsonService.java

package com.json.service;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.json.domain.Person;

public class JsonService {

public JsonService() {

}

public Person getPerson(){

Personperson=newPerson(1001,"jack","上海黄浦区");

return person;

}

public ListgetListPerson(){

Listlist=newArrayList();

Personperson1=newPerson(1001,"jack","上海黄浦区");

Personperson2=newPerson(1002,"rose","上海闵行区");

Personperson3=newPerson(1003,"mick","上海黄浦区");

list.add(person1);

list.add(person2);

list.add(person3);

return list;

}

public ListgetListString(){

Listlist=newArrayList();

list.add("北京");

list.add("上海");

list.add("湖南");

return list;

}

public List>getListMaps(){

List>list=newArrayList>();

Mapmap1=newHashMap();

Mapmap2=newHashMap();

map1.put("id", 1001);

map1.put("name", "jack");

map1.put("address", "北京");

map2.put("id", 1001);

map2.put("name", "rose");

map2.put("address", "上海");

list.add(map1);

list.add(map2);

return list;

}

}

JsonServlet.java

package com.json.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.json.service.JsonService;

import com.json.tools.JsonTools;

public class JsonServlet extends HttpServlet {

private JsonService service;

/**

* Constructor of the object.

*/

public JsonServlet() {

super();

}

/**

* Destruction of the servlet.

*/

public void destroy() {

super.destroy(); // Just puts "destroy" string in log

// Put your code here

}

/**

* The doGet method of the servlet.

*

* This method is called when a form has its tag value method equals to get.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

/**

* The doPost method of the servlet.

*

* This method is called when a form has its tag value method equals to post.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

PrintWriterout=response.getWriter();

StringjsonString="";

Stringaction_flag=request.getParameter("action_flag");

if(action_flag.equals("person")){

jsonString=JsonTools.createJsonString("person", service.getPerson());

}else if(action_flag.equals("persons")){

jsonString=JsonTools.createJsonString("persons", service.getListPerson());

}else if(action_flag.equals("listString")){

jsonString=JsonTools.createJsonString("listString", service.getListString());

}else if(action_flag.equals("listMap")){

jsonString=JsonTools.createJsonString("listMap", service.getListMaps());

}

out.println(jsonString);

out.flush();

out.close();

}

/**

* Initialization of the servlet.

*

* @throws ServletException if an error occurs

*/

public void init() throws ServletException {

service=newJsonService();

}

}

web.xml中servlet映射

This is the description of my J2EE component

This is the display name of my J2EE component

JsonServlet

com.json.servlet.JsonServlet

JsonServlet

/servlet/JsonServlet

我们通过浏览器

访问地址一:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=person

输出以下结果:

{"persons":{"address":"上海黄浦区","id":1001,"name":"jack"}}

访问地址二:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=persons

输出以下结果:

{"persons":[{"address":"上海黄浦区","id":1001,"name":"jack"},{"addrss":"上海闵行区","id":1002,"name":"rose"},{"address":"上海黄浦区","id":1003,"name":"mick"}]}

访问地址三:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=listString

输出以下结果:

{"persons":["北京","上海","湖南"]}

访问地址四:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=listMap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp无法使用substr_关公战秦琼------Excel、SPSS Modler和R的使用对比(下)

5. 数据可视化Excel在Excel中对数据可视化除常用的图表外,还有样式、迷你图等直接和实际数据来共同展示效果。另外,还可以与切片器、PowerView等功能结合来动态可视化。Excel中图表的类型很多,如常见的散点图、折线图、柱形图、饼图等&#x…

第三次预作业20155231邵煜楠:虚拟机上的Linux学习

java第三次预作业——虚拟机初体验(学习记录) 学习在笔记本上安装Linux操作系统通过老师给予的官网链接,下载了VirtualBox-5.1.14-112924-win和Ubuntu-16.04-desktop-amd64.iso开始按照安装,尽管如此,还是遇到来了一些问题。 -在选择虚拟机的…

nginx_反向代理

nginx_反向代理 1 worker_processes 1;2 3 events {4 5 worker_connections 1024;6 7 }8 9 10 11 http { 12 13 include mime.types; 14 15 default_type application/octet-stream; 16 17 sendfile on; 18 19 keepalive_timeout …

miui11未升级android版本,MIUI 11稳定版正式推送,升级前你需要了解

原标题:MIUI 11稳定版正式推送,升级前你需要了解10月18日,MIUI官网正式宣布MIUI 11 正式推送,这是在小米MIX Alpha发布会之时同时推出的,在经过内测、公测后正式面向大众消费者推送。以下是一些您升级前需要了解的东西…

lumion自动保存_LUMION吊打MAX,轻松玩转规划渲染!

--文末获取:城市配景建筑模型包--大型场景渲染是LUMION渲染中难度最高的图纸首先,需要大量非常优质的配景包括:配景建筑、植物其次,对硬件要求也极高像这样的图纸渲染主体建筑周边需要布置大量的配景建筑没有个2080TI,…

在地图上 添加柱状_如何做出一份惊艳的PPT地图页?这2个字,你一定要知道!...

这篇文章,咱们就从一个读者私信给我的案例来说,就是这张PPT:他当时问我的问题是,怎么把这个表格优化的更美观?坦白讲,这是一个无解的问题,为什么这么说呢?咱们简单对这个图表分析&am…

akka与neety_Akka STM –与STM Ref和Agent一起打乒乓球

akka与neety乒乓是一个经典示例,其中2个玩家(或线程)访问共享资源–乒乓表并在彼此之间传递Ball(状态变量)。 使用任何共享资源,除非我们同步访问,否则线程可能会遇到潜在的死锁情况。 PingPong…

怎样调用另一个html中的元素,html – 使用DIV作为另一个元素的背景

这里我用2个div做了一个例子:> .content,包含前端所需的一切> .background – 包含文本,图像和背景中的所有其他内容要将一个div包装在另一个div上(制作叠加层),你必须将它们放入相同的元素中,在本例中它是#wrapper div.放置位置:包装的相对宽度/高…

3.1HTML5样式的使用

1.标签&#xff1a;<style>&#xff1a;样式定义<link>&#xff1a;资源引用 2.属性rel"stylesheet"&#xff1a;外部样式表type"text/css"&#xff1a;引入文档的类型margin-left&#xff1a;边距 3.三种样式表插入方法 外部样式表&#xff1…

cobbler的dhcp服务_Cobbler服务器安装部署

网络安装大家一定不陌生&#xff0c;一般通过Pxedhcpnfstftp类似配置即可实现&#xff0c;但安装过程中还需手动干预&#xff0c;后来加入了kickstart可全自动同时安装数百台系统&#xff0c;方便运维管理&#xff01;但kickstart存在可配置性差&#xff0c;会打断本网段其它电…

JIT编译器,内联和转义分析

即时&#xff08;JIT&#xff09; 即时&#xff08;JIT&#xff09;编译器是Java虚拟机的大脑。 JVM中对JIT编译器的影响最大。 一会儿&#xff0c;让我们退后一步&#xff0c;看看已编译和未编译语言的示例。 诸如Go&#xff0c;C和C 之类的语言之所以称为编译语言&#xff…

多步注册页面html模板,PHP HTML多步骤页面_php_开发99编程知识库

我正在做一个项目&#xff0c;向数据库Mysql添加信息。 下面是我们使用会话创建 3表单并按步骤提供用户注册和用户&#xff0c;以及这里会话保存记录&#xff0c;如果我在步骤2 或者步骤 2中可以回滚和编辑某些内容。 这应该用会话完成。 如果我做了什么&#xff0c;我希望你帮…

云顶之弈机器人法爆_云顶之弈10.16b机器人阵容推荐 云顶之弈10.16b机器人娱乐阵容玩法攻略...

云顶之弈10.16b机器人阵容推荐&#xff0c;在云顶之弈10.16b版本中机器人没有什么改动&#xff0c;所以以机器人为核心的娱乐阵容依然可以玩&#xff0c;而且运气好的话吃鸡也不是不可以&#xff0c;下面小编为大家带来了云顶之弈10.16b机器人娱乐阵容玩法攻略&#xff0c;一起…

在running android lint期间发生了内部错误.,Eclipse出现quot;Running Android Lint has encountered a problemquot...

近期打开Eclipse的时候&#xff0c;总是发生这种一个错误&#xff1a;"Running Android Lint has encountered a problem"。截图例如以下&#xff1a;。可是Eclipse能够正常执行程序。不会造成其它影响。可是每次打开Eclipse时。总是看到这个警告&#xff0c;心情会非…

分页JQ+模糊查询

--页面 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <meta name"renderer" content"webkit|ie-stand"> <t…

idea 导出war包_使用IDEA实现远程代码DEBUG调试教程详解

我们在使用 IDEA DEBUG调试代码的时候&#xff0c;常常见到控制台会输出一句这样的话&#xff1a;「Connected to the target VM, address: 127.0.0.1:62981, transport: socket」&#xff0c;所以即使代码不在本地运行&#xff0c;只要JVM打开调试模式&#xff0c;并且网络能够…

lucene创建索引_Lucene概述第一部分:创建索引

lucene创建索引介绍 我最近一直在与开源搜索引擎Lucene合作 。 我不是专家&#xff0c;但是由于我只是浏览了一些相当稀疏的文档并将应用程序从Lucene的很旧的版本迁移到了最新版本的2.4&#xff0c;所以我在总体上很清楚。 Lucene的文档有点让人想像不到&#xff0c;因此我想趁…

鸿蒙os2.0发布回放,华为HarmonyOS 2.0系统发布会内容大全 鸿蒙os6月2日直播回放地址入口...

华为鸿蒙os6月2日直播回放在哪里看&#xff1f;华为HarmonyOS 2系统发布会说了些啥&#xff1f;HarmonyOS 2系统在6月2日正式发布了&#xff0c;之前预约过的小伙伴现在就可以更新体验了&#xff0c;这次发布将会对安卓系统一个重大的革新&#xff0c;将会彻底颠覆之前的安卓系…

02-SSH综合案例:需求分析(后台)

1.1.7 用户模块:(后台) 不用添加了&#xff0c;添加的话在前台就注册了。 查询所有用户&#xff1a; 修改用户信息&#xff1a; 删除用户信息&#xff1a; 1.1.8 一级分类:(后台) 主要都还是增删改查的操作 查询所有一级分类&#xff1a; *分页 添加一级分类&#xff1a; 修改…

python中当地时间_R 与 Python 中与时间相关内容的梳理

约万字长文预警&#xff0c;如果你没时间&#xff0c;就不用看了&#xff0c;这就是一个梳理的文章&#xff0c;方便我后来找资料。因为工作的关系&#xff0c;近期需要梳理一些 Python 的知识(可能有小伙伴知道了&#xff0c;LI-6800 搞了个大动作&#xff0c;支持 Python 编程…