JsonObject 就是常说的 json。是一种重要的数据传输对象。其格式为{"key1":value1,"key2",value2....};key 必须是字符串。
因为ajax请求不刷新专页面,但配合js可以实现属局部刷新,因此json常常被用来作为异步请求的返回对象使用。
通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。如果没有设置response.setContentType("application/json; charset=utf-8"); 则需要自己再js中进行解析。
(1)json的定义和使用扩展阅读
Java中交互方式分为同步和异步两种:
同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
区别:一个需要等待,一个不需要等待,在部分情况下,项目开发中都会优先选择不需要等待的异步交互方式。
比如银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互。
㈡ json-schema简介与应用
了解json schema首先要知道什么是json?
json 是 JavaScript Object Notation 的缩写,它是一种简化的数据交换格式,是目前互联网服务间进行数据交换最常见的一种交换格式,具有简洁、可读性好等特点。
在json中常见的数据类型主要包括
一个示例json格式比如:
如前文所述,json是目前应用非常广泛的数据交换格式。既然是用于数据交换的格式,那么就存在数据交换的双方。如何约定或校验对方的数据格式是符合要求的,就成了服务交互需要解决的一个问题。所以Json Schema就是用来定义json数据约束的一个标准。根据这个约定模式,交换数据的双方可以理解json数据的要求和约束,也可以据此对数据进行验证,保证数据交换的正确性。
目前最新的Json-schema版本是draft 7,发布于2018-03-19。下面我们就以官网的一个实例来看看Json-schema是如何进行数据约束以及其应用
如下是一个schema实例:
分析说明:
说明当前使用的schema版本,可以不包含
当前schema的唯一id标识,一般指向一个自主域名。方便后续引用,可以不包含
当前schema的标题,简要描述信息,可不包含
详细描述信息,可不包含
约束对象是object,也就是在 { } 中的数据
object中具体属性的约束,description是描述信息,不产生具体约束。
type约束 proctid 属性类型为整型
约束 proctName 属性类型为字符型
约束 price 属性类型为数字型,可以是整型或浮点型。
exclusiveMinimum 约束该数字>0(不包含0)
约束 tag 属性是array数组。items是数组项约束,这里约束数组项均为字符型
minItems 数组至少包含1项。
uniqueItems 约束数组中每项不得重复
约束 dimensions 嵌套对象,其中length,width,height均为数字类型
且这三个字段在dimensions对象中必须包含
当前数据对象必须包含proctId,proctName,price三个字段
以上是对Json-Schema的简要说明,详细介绍后续再奉上
㈢ JSON的定义
JSON是一种文本格式结构化数据的序列化。
JSON有四种原始类型:
两种结构化类型:
字符串(string)是以0个或更多的Unicode字符组成的序列。
对象(object)是以键值对(name/value)组成的无序集合,键名(name)必须是字符串类型,键值必须是字符串(string)、数值(number)、布尔(boolean)、空(null)、对象(object)或数组(array)中的一种。
数组(array)是0个或多个值(value)的有序集合。
JSON的设计目标是让JSON成为最小的,便携的,文本的,JavaScript的子集。
JSON 内容类型有如下几种:
根据 RFC 4627 文件,
The MIME media type for JSON text is application/json.
Type name: application
Subtype name: json
所以认为:The MIME media type for JSON text is application/json. The default encoding is UTF-8。
㈣ java开发,json是干什么的
对 和XML是没什抄么区别 所表达的意思都是一样的 但 在与浏览器的交互中通常都用JSON 当然 也可以用XML 不过JS对JSON的支持好很多 (JSON就是根据JS来的) 并且 JS字符串比XML文档显得干净些
这个大都是爱好问题 功能一样 看你喜欢用哪个了
㈤ 什么是JSON字符串
简单地说[2] ,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
名称 / 值对
按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":
{"firstName":"Brett"}
这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间:
firstName=Brett
但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
表示数组
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。
如果使用 JSON,就只需将多个带花括号的记录分组在一起:
{
"people":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
]
}
这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):
{
"programmers": [{
"firstName": "Brett",
"lastName": "McLaughlin",
"email": "aaaa"
}, {
"firstName": "Jason",
"lastName": "Hunter",
"email": "bbbb"
}, {
"firstName": "Elliotte",
"lastName": "Harold",
"email": "cccc"
}],
"authors": [{
"firstName": "Isaac",
"lastName": "Asimov",
"genre": "sciencefiction"
}, {
"firstName": "Tad",
"lastName": "Williams",
"genre": "fantasy"
}, {
"firstName": "Frank",
"lastName": "Peretti",
"genre": "christianfiction"
}],
"musicians": [{
"firstName": "Eric",
"lastName": "Clapton",
"instrument": "guitar"
}, {
"firstName": "Sergei",
"lastName": "Rachmaninoff",
"instrument": "piano"
}]
}
这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。
在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。