0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在客户端与服务器端采用JSON数据交换格式实现框架设计

电子设计 来源:郭婷 作者:电子设计 2019-08-29 08:00 次阅读

1 引言

随着无线技术的发展和无线通信设备的普及,基于手机、PDA等小型消费类和嵌人式设备的无线移动应用越来越广泛。在可编程手机中,基于Java的手机最为通行,事实上,Java已为多数手机制造商所接受,成为手机应用与服务的标准。构建网络感知软件时,选择正确的数据交换格式是一项重要的设计决策,尤其在设计移动和嵌入式应用程序时,此时,轻量和有效等特性是需要考虑的重要特征。此类特征非常重要,因为它们可转化为较低的计算要求和功耗使用、能发挥更好的性能以及较低的运营成本。这里研究JSON数据交换格式相比XML和传统数据交换格式所具有的优势,并提出在客户端(J2ME)与服务器端(J2EE)之间采用JSON数据交换格式的一般实现框架。

2 J2ME/J2EE简介

J2ME(Java 2 Platform. MICRO Edition)是Java 2的一部分。将Java语言与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。J2ME是针对有限硬件、有限功率、有限网络连接设备进行应用开发的技术,适合在无限通信设备上开发交互性较强的网络应用。在此基础上编写的MIDP应用程序具有良好的兼容性和可移植性,可在PDA等手持设备上很好的运行。

J2EE是Java 2平台的企业版,是一种利用Java 2平台简化企业解决方案的体系结构。J2EE使用多层分布应用模型,其典型的4层结构为:①运行在客户端机器上的客户层组件,如Web浏览器、Java Applet等;②运行在J2EE服务器上的Web层组件,如Servlet和JSP;③运行在J2EE服务器上的业务逻辑层组件(EJB);④运行在EJS(Enterprise Information System)服务器上的企业信息系统层软件。

3 JSON简介

JSON(JavaScript. Object Noation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。JSON采用完全独立于语言的文本格式,但也使用类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。

JSON格式的数据有对象和数组两种。对象是一个无序的“名称/值”对集合。一个对象以“{”开始,“}”结束。每个“名称”后跟一个“:”;“名称/值”对之间使用“,”分隔。数组值(value)的有序结合。一个数组以“{”开始,“}”结束。值之间使用“,”分隔。

4数据交换格式分析

XML是一种用于描述信息存储格式的语言,其优点是健壮性和描述性强,且是新一代开放、可互操作的Web Services选用的通信数据格式。在移动应用程序中,开发者通常自己创建数据交换格式或可扩展标记语言XML。前者的优势是可针对特定情况进行调整,从而最大限度地提高性能,并最大限度地利用计算资源。当在HTTP上使用后者时,其优势在于它是事实上的数据交换标准。另外,在XML中使用的基于文本的表示形式使其易于调试。这两种方法各有其缺陷,前者本质上是专用的、非标准的,并可能是不可互操作的,而后者数据表示过于正规和繁琐,对于移动和嵌入式应用程序尤其如此。

JSON是一种轻量级的数据交换格式,是基于文本的,具有良好的可读性且易于调试。JSON支持所有基本数据类型的表示法,并提供将这些数据类型相互解析为Java类型的方法。对于轻量级应用,JSON数据交换格式能够较好的节省手机的计算资源,减少网络传输时间,加快网络传输速度。

5 数据交换框架实现

5.1 框架总体设计

框架结构包括2部分:J2ME客户端和J2EE服务器端。客户端采用J2ME的MIDP技术,服务器端使用J2EE的servlet技术。客户端使用HTTP协议发送已序列化的JSON消息到服务器端,服务器端通过反序列化JSON消息,根据客户端请求进行相应的操作后,把请求的结果序列化成JSON消息返回给客户端,客户端获取到返回的JSON消息后,反序列化成具体需要的数据。图1为总体设计框架。

如何在客户端与服务器端采用JSON数据交换格式实现框架设计

5.2 服务器端

服务器端使用serverlet接收客户端发送的基于HTTP协议的JSON消息,并调用JSONObject类对JSON进行反序列化操作,得到所需的详细信息。根据JSON格式的数据类型,需要分3种情况对JSON格式的数据进行反序列化:①简单的对象形式。实现方法:创建一个JSONObiect实例,然后调用getString()函数,具体形式如下:JSONObject jsonObj=newJSONObject(message);String title=jsonObj.getString(“title”);其中message为接收到的JSON消息,title代表想要获取的名称。②对象里面嵌套对象的形式。实现方法:在原对象基础上调用其getJSONObject()方法。具体形式如下:JSONObjectbody_obj=jsonObj.getJSONObject();③数组形式。实现方法:在原对象的基础上调用其getJSONArray(),得到一个数据类型为JSONOebject的数组。反序列化得到请求的详细信息后,J2EE端根据请求进行其他操作,如从网络上获取XML数据、从数据库获取数据等。得到数据后,服务器端把数据序列化成JSON格式消息,发送到客户端。

5.3 客户端

客户端向服务器端发送已被序列化的JSON格式消息,然后等待服务器端返回的消息,接到服务器返回的消息后,反序列化JSON消息。处理过程调用ison.me的API。具体实现如下:①序列化成JSON格式。只需调用JSONObjeet的put方法添加相关项。JSONObject可以添加3种对象:简单的对象、JSONObject对象、JSONArray对象。具体操作如下:JSONObject header=new JSONObjeet ();headerput(“title”,“yahoonews”);JSONObject childObj=new JSONObject();header.put(“child”,childObj);JSONArray arrayObj=new JSONArray();headerput(“array”,arrayObj);②反序列化JSON格式消息。反序列化也包括3种情况:简单的JSONObject对象、嵌套的JSONObject对象、数组对象。具体实现如下:JSONObject bj=new JSONObject(str);String title=obj-getString(“title”);intcount=obj.getInt(“count”);JSONObject body=obj.getJSONObject(“body”);JSONArray arrayObj=obj.getJSONArray(“array”);

5.4 传输协议层

客户端和服务器端之间的通信采用HTTP协议。HTTP协议是一种广泛使用的协议,所有MIDP设备都支持HTTP协议。且在各种不同的无线网络上,HTTP协议实现相对较容易。HTTP协议请求方式有GET和POST两种。由于GET请求发送大数据块时对URL字符串长度有限制。对象JSON字符串长度可能很长,尤其当使用极其复杂的对象时。

同时,在跨域网络以纯文本方式发送所有数据,安全性难以保证.因此建议采用POST方式发送机密或内容极长的请求。

6 结束语

通过分析JSON、XML与自定义数据交换格式,提出以JSON作为轻量级数据交换格式,并给出其在客户端(J2ME)与服务器端(J2EE)解决方法的一般框架,解决了自定义和使用XML数据交换格式所带来的繁琐、耗费资源的缺陷。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 无线
    +关注

    关注

    31

    文章

    5423

    浏览量

    173026
  • 服务器
    +关注

    关注

    12

    文章

    8997

    浏览量

    85133
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104511
收藏 人收藏

    评论

    相关推荐

    qt tcp程序在服务器端发送数据之前能接收客户端发送的数据吗?

    写了一个tcp的客户端服务器端,是服务器端客户端发送文件,但是我想在服务器端发送之前先让客户端
    发表于 04-22 20:06

    一个服务器,多个客户端,怎么向指定的客户端数据

    我用labview做服务器,单片机做客户端客户端几百个,怎么区分客户端,给指定的客户发发数据
    发表于 06-01 09:26

    labview怎么实现服务器端一直等待客户端发送数据

    我现在在做labview的服务器端,但是当客户端发送数据结束后,我的服务器端会报错。报错的意思就是说客户端关闭,我想知道怎么
    发表于 08-12 14:34

    STM32F103上网络通信实验中服务器客户端连接但不能进行数据交换该怎么办?

    我在应用原子哥的103板子的网络通信实验时,发现了一个小问题,就是在服务器模式下,板子可以与很多的客户端建立连接,但是在进行数据交换时,却只能和第一个连上的客户端进行
    发表于 10-15 04:37

    为什么LWIP的TCP客户端服务器端断开后继续发送数据就无法检测到连接状态?

    发现LWIP的TCP客户端有个BUG,当服务器端开之后,如果还继续发送数据,那就不能检测到连接状态。求助求助
    发表于 10-29 20:26

    如何解决自定义和使用XML数据交换格式带来的缺陷?

    JSON数据交换格式相比XML和传统数据交换格式所具有哪些优势?如何解决自定义和使用XML数据交换格式带来的缺陷?
    发表于 05-27 06:20

    JSON是什么?如何去创建一种JSON

    1.JSON是一种轻量级的数据交换格式。是一种独立于语言的文本格式。轻量级适合xml相比较。数据交换指的是客户端
    发表于 07-09 07:06

    如何实现服务器客户端数据交互?

    如何实现服务器客户端数据交互?
    发表于 10-26 07:22

    监控系统客户端服务端设计

    项目开发报告1 项目简介1.1 概述1.2 开发环境1.3 其他支持1.4 应用界面1.4.1 服务器端1.4.2 客户端1.5 程序使用2 项目开发2.1 搭建基于实验平台数据库2.1.1
    发表于 12-21 07:02

    请问如何处理从客户端服务器的写操作?

    不知道如何从客户端服务器执行相同的操作。在 Android 下,我可以将数据写入特性(在 NO RESPONSE 模式下),但我不明白如何在服务器
    发表于 01-04 08:22

    基于J2ME/J2EE的JSON数据交换的探讨

    分析JSON数据交换格式,并提出在客户端(J2ME)与服务器端(J2EE)之间采用JSON
    发表于 12-30 16:10 0次下载

    android使用JSON进行网络数据交换

    本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端服务器端进行 JSON 格式
    发表于 12-04 11:51 0次下载

    网络调试和串口调试集合UDP TCP客户端和TCP服务器端应用程序免费下载

    本文档的主要内容详细介绍的是网络调试和串口调试集合UDP TCP客户端和TCP服务器端应用程序免费下载。
    发表于 08-30 08:00 16次下载
    网络调试和串口调试集合UDP TCP<b class='flag-5'>客户端</b>和TCP<b class='flag-5'>服务器端</b>应用程序免费下载

    数据是怎么样保证准确的从客户端发送到服务器端

    你有想过吗,在计算机网络当中,数据是怎么样保证准确的从客户端发送到服务器端的?中间涉及到了哪些理论?
    的头像 发表于 07-01 10:09 1997次阅读

    网络工程师学Python之JSON数据交换格式解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语法,但也可以被其他语言如Python解析和生成。
    的头像 发表于 04-21 16:53 1429次阅读