java中怎么使用json数据_JAVA中使用JSON进行数据传递

1.是不是只有xml传递数据的技术才是webservice?

可以这么理解。webservice是基于SOAP协议,SOAP协议是基于XML的文本协议。所以webservice可以简单理解为是基于XML的传输技术,好比HTML是基于文本的传输协议。

2.servlet是服务端的java程序的统称?

不是。 servlet本质上是一个普通的Java程序,但他是支持某个标准的Java程序,这个标准就是Servlet规范。除了Java中的servlet程序要满足Servlet规范、Tomcat、JBoss、WebLogic等这些Java服务器程序也得遵循Servlet规范。

3.webservice可不可以通过json传递数据?

不可以。webservice是基于XML的。

4.json和xml是不是并列关系?

并列关系。json和xml都是描述数据的,是实现同一目的的不同手段,你寄快递可以选EMS也可选中通。

5.http+json是什么概念?

这个是个应用性的东西。大家喜欢http+json的原因,主要在于json的javascript的兼容性比较好,写程序简单方便。

举个例子:发给你的快递都是空运的方式(传输协议是HTTP),但一种快递是以箱子(html)打包,一种快递是以袋子(json)打包,两种都可以给你发快递,但有的情况箱子方便,有的情况袋子方便。

6.我现在通过tomcat+axis2发布了一个web service,计算两个整数的和,可以通过浏览器访问。这是一个webservice吗?

是的。

7.我在axis2下的tomcat/webappps/axis2/web-info/下建立了一个poco文件夹,把class类型的java程序放了进去,一般服务器是这样部署吗?

不是。一般是把Web工程,导出为war包,再把war包复制到tomcat/webappps/目录下。

webservice工程本质上也是个普通的Java Web工程,原理一样。 网上或教程中多讲热发布Webservice,我觉得在实际中没什么用,一般重新发布webservice都涉及重新部署或重启服务器。

在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JSON字符串来传递数据并在WEB前端或者Android客户端使用JSON来解析接收到的数据。

首先,在JAVA中使用JSON需要引入 org.json 包(点击 这里 可以下载相应的JAR包!), 并在程序中引入相应的JSON类:

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

其次,在服务器端的Servlet类中,可以使用如下方法收集数据并生成相应的JSON字符串

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 //声明一个Hash对象并添加数据

2 Map params = new HashMap();

3

4 params.put("username", username);

5 params.put("user_json", user);

6

7 //声明JSONArray对象并输入JSON字符串

8 JSONArray array = JSONArray.fromObject(params);

9 put.println(array.toString());

48304ba5e6f9fe08f3fa1abda7d326ab.png

在WEB前端可以通过javascript直接对JSON字符串进行解析,在Android客户端的话,需要使用JSON类来解析字符串:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 //@description: 根据接收到的JSON字符串来解析字符串中所包含的数据和数据对象

2

3 //接收到的JSON字符串

4 String result = "[{\"username\": \"your name\", \"user_json\": {\"username\": \"your name\", \"nickname\": \"your nickname\"}}]";

5

6 //根据字符串生成JSON对象

7 JSONArray resultArray = new JSONArray(result);

8 JSONObject resultObj = resultArray.optJSONObject(0);

9

10 //获取数据项

11 String username = resultObj.getString("username");

12

13 //获取数据对象

14 JSONObject user = resultObj.getJSONObject("user_json");

15 String nickname = user.getString("nickname");

48304ba5e6f9fe08f3fa1abda7d326ab.png

其实,主要就是涉及到以下集中数据类型之间的转换:

1. String 转换为JSON对象

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 import org.json.JSONArray;

2 import org.json.JSONException;

3 import org.json.JSONObject;

4

5 //别忘了添加上JSON包哦!

6 public class StringToJSON {

7 public static void main(String[] args) throws JSONException{

8

9 System.out.println("abc");

10 //定义JSON字符串

11 String jsonStr = "{\"id\": 2," +

12 " \"title\": \"json title\", " +

13 "\"config\": {" +

14 "\"width\": 34," +

15 "\"height\": 35," +

16 "}, \"data\": [" +

17 "\"JAVA\", \"JavaScript\", \"PHP\"" +

18 "]}";

19

20 //转换成为JSONObject对象

21 JSONObject jsonObj = new JSONObject(jsonStr);

22

23 //从JSONObject对象中获取数据

24 JavaBean bean = new JavaBean();

25

26 //根据属性名称获取int型数据;

27 bean.setId(jsonObj.getInt("id"));

28

29 //根据属性名获取String数据;

30 bean.setTitle(jsonObj.getString("title"));

31

32 //根据属性名获取JSONObject类

33 JSONObject config = jsonObj.getJSONObject("config");

34 bean.setWidth(config.getInt("width"));

35 bean.setHeight(config.getInt("height"));

36

37 //根据属性名获取JSONArray数组

38 JSONArray data = jsonObj.getJSONArray("data");

39 for(int index = 0, length = data.length(); index < length; index++) {

40 //这里在org.json.JSONArray对象中居然没有找到toArray方法,求各位网友给出解决办法啊!

41 // bean.setLanguages(String[]);

42 }

43 }

44 }

45

46 class JavaBean{

47 private int id ;

48 private String title;

49 private int width;

50 private int height;

51 private String[] languages;

52

53 //这里省略了设置器和访问器

54 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

2. JSON对象转换为String字符串

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 public static void main(String[] args) throws JSONException {

2

3 //创建JSONObject对象

4 JSONObject json = new JSONObject();

5

6 //向json中添加数据

7 json.put("username", "wanglihong");

8 json.put("height", 12.5);

9 json.put("age", 24);

10

11 //创建JSONArray数组,并将json添加到数组

12 JSONArray array = new JSONArray();

13 array.put(json);

14

15 //转换为字符串

16 String jsonStr = array.toString();

17

18 System.out.println(jsonStr);

19 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

最终输出结果为: [{"username":"wanglihong","height":12.5,"age":24}]

3.集合转换为JSONArray对象

48304ba5e6f9fe08f3fa1abda7d326ab.png

public static void main(String[] args)throws JSONException{

//初始化ArrayList集合并添加数据

List list = new ArrayList();

list.add("username");

list.add("age");

list.add("sex");

//初始化HashMap集合并添加数组

Map map = new HashMap();

map.put("bookname", "CSS3实战");

map.put("price", 69.0);

//初始化JSONArray对象,并添加数据

JSONArray array = new JSONArray();

array.put(list);

array.put(map);

//生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

个人写的读写json数据简单示例:

读:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 import java.io.FileNotFoundException;

2 import java.io.FileReader;

3

4 import com.google.gson.JsonArray;

5 import com.google.gson.JsonIOException;

6 import com.google.gson.JsonObject;

7 import com.google.gson.JsonParser;

8 import com.google.gson.JsonSyntaxException;

9

10 public class Json_read {

11

12 public static void main(String[] args) {

13

14 try {

15 JsonParser parser = new JsonParser();

16 JsonObject object = (JsonObject) parser.parse(new FileReader("test.json"));

17 System.out.println("cat="+object.get("cat").getAsString());

18 System.out.println("pop="+object.get("pop").getAsBoolean());

19

20 JsonArray array = object.get("languages").getAsJsonArray();

21 for(int i=0;i

22 System.out.println("--------");

23 JsonObject subObject = array.get(i).getAsJsonObject();

24 System.out.println("id="+subObject.get("id").getAsInt());

25 System.out.println("name="+subObject.get("name").getAsString());

26 System.out.println("ide="+subObject.get("ide").getAsString());

27

28 }

29

30 } catch (JsonIOException e) {

31 e.printStackTrace();

32 } catch (JsonSyntaxException e) {

33 e.printStackTrace();

34 } catch (FileNotFoundException e) {

35 e.printStackTrace();

36 }

37 }

38

39 }

40

48304ba5e6f9fe08f3fa1abda7d326ab.png

写:

48304ba5e6f9fe08f3fa1abda7d326ab.png

import com.google.gson.JsonArray;

import com.google.gson.JsonObject;

public class Json_Write {

public static void main(String[] args) {

JsonObject object = new JsonObject();//整体jsonobject容器

object.addProperty("cat", "it");

JsonArray array = new JsonArray();

JsonObject lan1 = new JsonObject();

lan1.addProperty("id", 1);

lan1.addProperty("name", "java");

lan1.addProperty("ide", "eclipse");

array.add(lan1);

JsonObject lan2 = new JsonObject();

lan2.addProperty("id", 2);

lan2.addProperty("name", "switf");

lan2.addProperty("ide", "XCode");

array.add(lan2);

JsonObject lan3 = new JsonObject();

lan3.addProperty("id", 3);

lan3.addProperty("name", "c#");

lan3.addProperty("ide", "visual studio");

array.add(lan3);

object.add("languages", array);

object.addProperty("pop", true);

System.out.println(object.toString());

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

test.json

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 {

2 "cat":"it",

3 "languages":[

4 {"id":1,"ide":"Eclipse","name":"Java"},

5 {"id":2,"ide":"XCode","name":"Swift"},

6 {"id":3,"ide":"Visual studio","name":"c#"}

7 ],

8 "pop":true

9 }

转自:https://www.cnblogs.com/UniqueColor/p/5724795.html

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

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

相关文章

java 限制参数类型_java定义受限制的类型参数操作

有时您可能想限制可以在参数化类型中用作类型参数的类型。 例如&#xff0c;对数字进行操作的方法可能只希望接受Number或其子类的实例。 这就是有界类型参数的用途。受限制参数类型的方法示例要声明有界类型参数&#xff0c;请列出类型参数的名称&#xff0c;后跟extends关键字…

安卓手机运行ios教程_英雄联盟手游傻瓜安装教程,IOS/安卓双端可用!

软件/资料获取方式在文末正文&#xff1a;前几天发哥预告了一下LOL手游上线的事&#xff0c;本来以为国服也会同步上线&#xff0c;结果也是意料之中的跳票了&#xff0c;让我不禁想起当年玩魔兽世界时国服万年的TBC&#xff0c;不过据说LOL推迟上线是怕影响王者荣耀5周年庆典&…

easy excel date 类型解析报错_ptarchiver原理解析

pt-archiver原理解析作为MySQL DBA&#xff0c;可以说应该没有不知道pt-archiver了&#xff0c;作为pt-toolkit套件中的重要成员&#xff0c;往往能够轻松帮助DBA解决数据归档的问题。例如线上一个流水表&#xff0c;业务仅仅只需要存放最近3个月的流水数据&#xff0c;三个月前…

设计师电脑推荐笔记本_笔记本电脑选购推荐全攻略

笔记本电脑现如今在我们的生活中出镜率如此之高&#xff0c;不论是学生党查阅资料还是上班族的忙碌办公&#xff0c;抑或是电竞爱好者的游戏体验&#xff0c;都要依靠笔记本电脑来完成&#xff0c;但对于它的选购方法你了解多少&#xff1f;一千个人就有一千种不同的标准&#…

python内循环只执行一次_如何1分钟内从3600只股种选出黑马股,仅分享这一次(太透彻了)...

“1234”操盘定理中&#xff0c;1是指如何持牛股&#xff0c;2是指观念要正确&#xff0c;3是指看破十个现象&#xff0c;4是指抓热点。具体讲解下选股步骤盘后我们怎么去快速选出超短线需要密切关注的票呢?其实选股方法少说也有几千种&#xff0c;我想没有人统计过&#xff0…

java 运行时类型_Java基础之RTTI 运行时类型识别

运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制&#xff0c;在Java运行时&#xff0c;RTTI维护类的相关信息。多态(polymorphism)是基于RTTI实现的。RTTI的功能主要是由Class类实现的。Class类Class类是"类的类"(class of classes)。如果…

指定的服务已经标记为删除_你的电话号码被标记过吗?你知道这件事情还能赚钱吗?...

今天闲来无事和大家唠唠赚钱的小副业。“电话标记”&#xff0c;我被这事困惑了很多年&#xff0c;最近解决了&#xff0c;同时还发现&#xff0c;这个信息差能挣钱&#xff0c;文末还给到方法&#xff0c;执行力强的伙伴原样照做&#xff0c;0成本&#xff0c;马上开搞&#x…

mplab x ide 中文使用手册_SCI必备利器:翻译又快又准,强推这款超牛X的神器!...

随手转发给好友和朋友圈 编辑&#xff1a;科研小通再分享一款翻译神器&#xff0c;不用调用Google服务器&#xff0c;速度超快。实时翻译&#xff0c;服务器速度杠杠的。今天给大家安利一款超牛X的翻译神器&#xff1a;Mate Translate。官网首页https://gikken.co/mate-transla…

python流行趋势_Python流行度再创新高,学Python就从风变编程开始

10月初&#xff0c;全球编程语言社区TIOBE公布了2020年10月编程语言排行榜&#xff0c;排名情况相较前几个月变化不大&#xff0c;前十名分别为C、Java、Python、C 、C#、Visual Basic、JavaScript 、PHP、R和SQL。其中&#xff0c;Python继续稳居第三&#xff0c;且其受欢迎度…

8086汇编4位bcd码_238期中4头3尾,排列五第19239期爱我彩规

爱我彩规专业研究(七星彩、排列五) 前四位的铁码与定位规&#xff0c;有幸开通爱我彩规公众号&#xff0c;努力为大家提供稳定的号码参考。作者微信号awc1125。 逢星期二和星期天不在彩码课堂公众号转发&#xff0c;因星期二和星期天每日八篇巳排满&#xff0c;只发爱我彩规公…

centos6.5 编译安装mysql_Centos6.5编译安装mysql 5.7.14详细教程

此文实例给亲们分享了CENTOS6.5 编译mysql 5.7.14安装配置方法&#xff0c;供大家参考&#xff0c;具体内容如下mysql5.7.14 编译安装在自定义文件路径下下载安装包配置安装环境编译安装cmake\-DCMAKE_INSTALL_PREFIX/data/db5714 \-DMYSQL_DATADIR/data/db5714/var \-DMYSQL_U…

时间插件只能选择整点和半点_我花一小时自制了三款PPT插件,不仅免费分享,还想手把手教你制作...

更准确的说&#xff0c;三顿花一小时给PPT里这个天天和你见面的功能区做了一次彻底的整容&#xff1a;我精简了好多根本用不到的功能&#xff0c;还添加了一大波可以让你效率翻倍的一键操作&#xff0c;比如一键拆分文字&#xff0c;一键美化图表等等。这样的改头换面操作起来一…

c主线程如何等待子线程结束 linux_使用互斥量进行同步 - Linux C进程与多线程入门_Linux编程_Linux公社-Linux系统门户网站...

互斥简单地理解就是&#xff0c;一个线程进入工作区后&#xff0c;如果有其他线程想要进入工作区&#xff0c;它就会进入等待状态&#xff0c;要等待工作区内的线程结束后才可以进入。基本函数(1) pthread_mutex_init函数原型&#xff1a;int pthread_mutex_init ( pthread_mut…

电脑声音太小如何增强_感觉手机音量太小了?教你这样设置,声音立马大上许多...

不管是打电话&#xff0c;还是看电视&#xff0c;如果觉得手机的声音太小了&#xff0c;总会感到听起来很吃力&#xff0c;那么我们遇到这种情况&#xff0c;可以怎么办呢&#xff1f;建议大家看看下面这个方法&#xff0c;或许会让你的手机音量瞬间变大。1、打开单声道音频如今…

java 8时间操作_Java8 时间日期类操作

Java8 时间日期类操作Java8的时间类有两个重要的特性线程安全不可变类&#xff0c;返回的都是新的对象显然&#xff0c;该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全的问题。同时Java8的时间类提供了诸多内置方法&#xff0c;方便了对时间进行相应的操作。上…

java虚拟机_一文彻底读懂Java虚拟机!(JVM)

提到Java虚拟机(JVM)&#xff0c;可能大部分人的第一印象是“难”&#xff0c;但当让我们真正走入“JVM世界”的时候&#xff0c;会发现其实问题并不像我们想象中的那么复杂。唯一真正令我们恐惧的&#xff0c;其实是恐惧本身。而作为整个JVM系列的首篇&#xff0c;本文将带你解…

如何把一个软件嵌入另一个软件_新增一个软件一个游戏

今后会不定时增加付费软件的试用&#xff0c;如果大家有希望选购的IOS软件可留言。如果各位觉得软件好用&#xff0c;请去App Store购买支持开发者。MaginNote 3 (&#xffe5;88)简介&#xff1a;MarginNote 3,全新上线电子阅读器,助力更高效书籍阅读和学习.革新性整合阅读标注…

java图书管理系统技术难度_Java图书管理系统练习程序(一)

Java图书管理系统练习程序第一部分该部分主要实现命令行方式的界面与无数据库访问的练习&#xff0c;通过本练习、主要掌握Java的基础知识与面向对象程序设计思想、面向接口编程技术的知识与运用。一、练习程序功能分析该练习程序主要用于学习Java的基础编程知识与面向接口编程…

java语言_JAVA语言

Java&#xff08;计算机编程语言&#xff09;JavaEE&#xff1a;12天掌握Java语言开发 - Java-环境搭建及基础语法 - 创客学院直播室Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Jav…

linux关机_强制关机对电脑有什么危害?

强制按下关机键对电脑有什么影响&#xff1f;首先我们来了解下强制按下关机和正常关机的流程有什么区别&#xff1a;比较上面这两个流程图我们可以发现正常关机系统关机流程硬件关机流程。强制关机则缺少了系统关机流程这个部分&#xff0c;仅仅执行了硬件关机的这个流程。虽然…