iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >详谈Java中net.sf.json包关于JSON与对象互转的坑
  • 540
分享到

详谈Java中net.sf.json包关于JSON与对象互转的坑

javanet.sf.jsonjson 2023-05-30 19:05:18 540人浏览 泡泡鱼
摘要

在web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递。数据的格式通常有2种:1、xml;2、JSON。通常来说都是使用jsON来传递数据。本文正是介绍在Java中JSON与对象之间互相转换

web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递。数据的格式通常有2种:1、xml;2、JSON。通常来说都是使用jsON来传递数据。本文正是介绍在Java中JSON与对象之间互相转换时遇到的几个问题以及相关的建议。

首先明确对于JSON有两个概念:

JSON对象(javascript Object Notation,JavaScript对象表示法)。这看似只存是位JavaScript所定制的,但它作为一种语法是独立于语言以及平台的。只是说通常情况下我们在客户端(浏览器)向服务器端传递数据时,使用的是JSON格式,而这个格式是用于表示JavaScript对象。它是由一系列的“key-value”组成,如 {“id”: 1, “name”: “kevin”},这有点类似Map键值对的存储方式。在Java中所述的JSON对象,实际是指的JSONObject类,这在各个第三方的JSONjar包中通常都以这个名字命名,不同jar包对其内部实现略有不同。

JSON字符串。JSON对象和JSON字符串之间的转换是序列化与反序列化的过程,这就是好比Java对象的序列化与反序列化。在网络中数据的传递是通过字符串,或者是二进制流等等进行的,也就是说在客户端(浏览器)需要将数据以JSON格式传递时,此时在网络中传递的是字符串,而服务器端在接收到数据后当然也是字符串(String类型),有时就需要将JSON字符串转换为JSON对象再做下一步操作(String类型转换为JSONObject类型)。

以上两个概念的明确就基本明确了JSON这种数据格式,或者也称之为JSON语法。Java中对于JSON的jar包有许多,最最“常用”的是“net.sf.json”提供的jar包了,本文要着重说的就是这个坑包,虽然坑,却有着广泛的应用。其实还有其他优秀的JSON包供我们使用,例如阿里号称最快的JSON包——fastjson,还有谷歌的GSON,还有jackson。尽量,或者千万不要使用“net.sf.json”包,不仅有坑,而且已经很老了,老到都没法在idea里下载到源码Maven仓库里显示它2010年在2.4版本就停止更新了。下面就谈我已知的“net.sf.json”的2个bug(我认为这是bug),以及这2个bug是如何产生的。

Java中的JSON坑包——net.sf.json

1. 在Java对象转换JSON对象时,get开头的所有方法会被转换

这是什么意思呢,例如现有以下Java对象。

package sfjson;import java.util.List;public class Student {  private int id;  private List<Long> courseIds;  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public List<Long> getCourseIds() {    return courseIds;  }  public void setCourseIds(List<Long> courseIds) {    this.courseIds = courseIds;  }  public String getsql() {    //此类中获取sql语句的方法,并没有对应的属性字段    return "this is sql.";  }}

--结束END--

本文标题: 详谈Java中net.sf.json包关于JSON与对象互转的坑

本文链接: https://www.lsjlt.com/news/220593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作