jsonformat,json formatter怎么用
jsonformat,json formatter怎么用详细介绍
本文目录一览: json formatter怎么用
把json objects copy and paste 然后一键format
一 简介:
JSON(JavaScript对象符号)是一种轻量级的数据交换格式。这是很容易为人类所读取和写入。这是易于机器解析和生成。它是基于JavaScript编程语言的一个子集 , 标准ECMA-262第三版- 1999年12月。JSON是一个完全独立于语言的文本格式,但使用C家族的语言,包括C,C + +,C#,Java中的JavaScript,Perl的,Python中,和许多其他程序员所熟悉的约定。这些特性使JSON成为理想的数据交换语言。他和map很类似,都是以
键/值 对存放的。
二 JSON 使用须要用的JAR包:
commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar
三 使用JSON中的JSONObject:
1.创建一个JSONObject对象,并使用put();方法添加元素:
首先我们创建一个User对象以备后用:
public class User {
private int id;
private String name;
private String pwd;
private String sex;
//get,set方法
@Override
//重写他的toString方法
public String toString() {
return this.name+"--"+this.pwd+"--"+this.sex;
}
}
例子如下:
import net.sf.json.JSONObject;
public class TestJson {
private static JSONObject json = null;
public static void main(String[] args) {
json = new JSONObject();
json.put("id","1");
json.put("name","张三");
json.put("pwd","123456");
System.out.println(json);
}
}
运行:
C:\java>java TestJson
{"id":"1","name":"张三","pwd":"123456"}
通过这段代码我们就能很清淅的看到他的添加元素和map集合方式一样。
现在我们要将这个json对象放进一个JAVABEAN的User对象怎么弄呢?很简单
我们须要在 TestJson 类中的主方法中加入(放在System.out.println(json)这句话后面)
User user = new User();
user.setId(Integer.parseInt(json.getString("id")));
//json.getString("id")就是通过他的KEY值取得对应的value值
user.setName(json.getString("name"));
user.setPwd(json.getString("pwd"));
System.out.println(user);
这样我们就把json这个对象里的值放进user对象里面了。
运行:
C:\java>java TestJson
{"id":"1","name":"张三","pwd":"123456"}
张三--123456--null
json添加元素除了用put();方法之外还可以用element();如:json.element("11", "222");
2.创建一个JSONArray对象,并添加元素:
JSONArray添加元素和list集合一样,当然取值也很像,代码如下
import net.sf.json.*;
public class TestJson1 {
private static JSONObject json = null;
private static JSONArray jsonArray = null;
public static void main(String[] args) {
jsonArray = new JSONArray ();
jsonArray.add(0, "张三");
jsonArray.add(1, "李四");
jsonArray.add(2, "王五");
jsonArray.add(3, "小三");
System.out.println(jsonArray);
System.out.println(jsonArray.get(1));
}
}
输出结果为:
["张三","李四","王五","小三"]
李四
注:json的基本格式这些网上很多,就不多说了,我们只须记住一句话就行了:[]表示数组,{}表示对象就完了!
1.从Object到String
要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可
(1)示例一
Book book=new Book();
book.setName("Java");
book.setPrice(52.3f);
JSONObject object=JSONObject.fromObject(book);
System.out.println(object.toString());
(2)示例二
Book book=new Book();
book.setName("Java");
book.setPrice(52.3f);
Book book2=new Book();
book2.setName("C");
book2.setPrice(42.3f);
List list=new ArrayList();
list.add(book);
list.add(book2);
JSONArray arry=JSONArray.fromObject(list);
System.out.println(arry.toString());
//结果如下:
[{"name":"Java","price":52.3},{"name":"C","price":42.3}]
2.从String到Object
要先用String对象构造一个JSONObject或者JSONArray对象
(1)示例一
String json="{name:'Java',price:52.3}";
JSONObject object=JSONObject.fromObject(json);
System.out.println(object.get("name")+" "+object.get("price"));
(2)示例二
String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]";
JSONArray array=JSONArray.fromObject(json);
for(int i=0;i< array.size();i++){
Map o=(Map)array.get(i);
System.out.println(o.get("name")+" "+o.get("price"));
}
3.从String到Bean
(1)单个Bean对象
String json="{name:'Java',price:52.3}";
JSONObject object=JSONObject.fromObject(json);
Product product=(Product)JSONObject.toBean(object,Product.class);
System.out.println(product.getName()+" "+product.getPrice());
(2).Bean的数组
String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]";
JSONArray array=JSONArray.fromObject(json);
Product[] products=(Product[]) JSONArray.toArray(array,Product.class);
for(Product p:products){
System.out.println(p.getName()+" "+p.getPrice());
}
自定义封装JSON操作的类
package com.util;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JsonHelper {
//从普通的Bean转换为字符串
public static String getJson(Object o){
JSONObject jo=JSONObject.fromObject(o);
return jo.toString();
}
//从Java的列表转换为字符串
public static String getJson(List list){
JSONArray ja=JSONArray.fromObject(list);
return ja.toString();
}
//从Java对象数组转换为字符串
public static String getJson(Object[] arry){
JSONArray ja=JSONArray.fromObject(arry);
return ja.toString();
}
//从json格式的字符串转换为Map对象
public static Map getObject(String s){
return JSONObject.fromObject(s);
}
//从json格式的字符串转换为List数组
public static List getArray(String s){
return JSONArray.fromObject(s);
}
//从json格式的字符串转换为某个Bean
public static Object getObject(String s,Class cls){
JSONObject jo=JSONObject.fromObject(s);
return JSONObject.toBean(jo, cls);
}
//从json格式的字符串转换为某类对象的数组
public static Object getArray(String s,Class cls){
JSONArray ja=JSONArray.fromObject(s);
return JSONArray.toArray(ja, cls);
}
}
SpringBoot @JsonIgnoreProperties、@JsonIgnore、@JsonFormat注解的简单使用
类上添加了@JsonIgnoreProperties(value = {"password"}) 注解,即忽略password字段,不会返回password
@JsonIgnore注解用来忽略某些字段,可以用在变量或者Getter方法上,用在Setter方法时,和变量效果一样。这个注解一般用在我们要忽略的字段上。
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段。这个注解还可以指定要忽略的字段,例如@JsonIgnoreProperties({ “password”, “secretKey” })
@JsonFormat可以帮我们完成格式转换。例如对于Date类型字段,如果不适用JsonFormat默认在rest返回的是long,如果我们使用@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”),就返回"2018-11-16 22:58:15"
comment、fullName、address属性被忽略了,regDate的格式进行转换
json格式不对外输出的注解是
Json格式, 不能加注释 第一次写博客, 记录一下工作中遇到的一些问题和经历。 在项目中写了本地的接口数据, 用的 JSON Server快速搭建的模..
1.注解名称:@JsonIgnore 作用:在实体类向前台返回数据时用来忽略不想传递给前台的属性或接口。 Eg:User实体中会有字段password字段,
当返回用户信息给前台的时候,当然是不希望将password值也一并返回。所以,这个时候可以在password属性上加上注解JsonIgnore或者,
可以在User类上加上注解@JsonIgnoreProperties(value = "{password}")
2.注解名称:@JsonFormat
前台使用固定时间格式时可以在属性名上添加@JsonFormat注解()
不返回null字段数据
3.注解名称:@JsonFormat
在相关对象的类上添加 @JsonInclude 注解,设定值为 NON_NULL
EditPlus中如何设置JSON的格式化功能
我们运用EditPlus查看JSON语言的时候,需要对JSON进行格式化处理。那么能不能在EditPlus中设置JSON的一键格式化功能呢?这当然是可以的,下面我就给大家分享一下如何设置这项功能。
工具/材料 EditPlus
首先我们打开EditPlus软件,点击顶部的Tools菜单,然后选择下来菜单中的Configure User Tools选项,如下图所示
接下来会弹出Preferences界面,我们点击Group Name按钮,如下图所示
在弹出的Rename Group界面中我们给新建的Group起一个名字,如下图所示
然后点击Add Tool按钮,在右侧出现的下来菜单中选择Program选项,如下图所示
接下来就需要下载json格式化的脚本文件了,如下图所示,下载好了以后将脚本文件拷贝到EditPlus的安装目录下面
然后我们在JsonFormat的格式化参数中安如下图所示的方式进行配置即可
配置完毕以后,回到EditPlus主界面,编写一个未格式化的JSON串,然后点击Tools菜单,接着点击下拉选项中的JsonFormat选项,如下图所示
最后你会看到,刚才编写的未格式化的JSON串已经被格式化了,如下图所示
@JSONField的ordinal与format属性使用与注意事项
数字越小,越先被序列化。
ordinal属性的默认值是0,对于使用了@JSONField注解的字段,若未指定值,则优先级最高。
注意:序列化和反序列化使用JSON.toJSONString和JSON.parseObject,如果使用JSONArray,在使用ordinal属性的时候可能会失效。
format设置之后在序列化时会自动转化为设定的格式。
Jackson 对象和JSON的相互转换
一、Java对象 ? JSON
1.1 转换方式
首先创建转换对象ObjectMappera
ObjectMapper mapper = new ObjectMapper();
该对象主要有两个转换方法
第二种方式:
mapper.writeValue(参数1,p1);
关于参数1
File:将obj对象转换为json字符串,并保存到指定的文件中
Write:将obj对象转换为json字符串,并将json填充到字符输出流中
OutputStream:将obj对象转换为json字符串,并将json填充到字节输出流中
比如:
将JSON字符串数据写入到test.txt文件中:
mapper.writeValue(new File("/Users//Desktop/test.txt"), p1);
1.2 注解使用
@JsonIgnore:排除属性
@JsonIgnore
private Date birthday;
转换最终的JSON字符串中,不会有birthday键值对。
@JsonFormat:属性值格式化
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;
转换结果:
{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:23:33”}
1.3 复杂Java对象转换
List集合转换为JSON字符串:
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(list);
System.out.println(json);
输出结果:
[{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:25:23”},{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:25:23”},{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:25:23”}]
Map集合转换为JSON字符串
public void test4() throws Exception {
? ? Person p1 = new Person();
? ? p1.setName("Alex");
? ? p1.setAge(21);
? ? p1.setGender("男");
? ? p1.setBirthday(new Date());
? ? // 创建JavaBean对象
? ? Map
map = new HashMap
();
//? ? ? ? map.put("name", "Alex");
//? ? ? ? map.put("age", "1111");
//? ? ? ? map.put("gender", "xxx");
? ? map.put("k1", p1);
? ? map.put("k2", p1);
? ? map.put("k3", p1);
? ? // 转换
? ? ObjectMapper mapper = new ObjectMapper();
? ? String json = mapper.writeValueAsString(map);
? ? System.out.println(json);
}
输出结果:
{“k1”:{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:30:08”},“k2”:{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:30:08”},“k3”:{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:30:08”}}
二、JSON ? Java对象
2.1 JSON转换为Java对象
String json = "{\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}";
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(json, Person.class);
System.out.println(person);
2.2 JSON转换为Java集合对象
String json = "[{\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}," +
? ? ? ? ? ? ? ? "? ? ? {\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}," +
? ? ? ? ? ? ? ? "? ? ? {\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}]\n";
ObjectMapper mapper = new ObjectMapper();
List
list = mapper.readValue(json, new TypeReference
<list
>() {});
for (Person p : list) {
? ? System.out.println(p);
}
输出结果:
Person{name=‘Alex’, age=21, gender=‘男’, birthday=Wed Mar 27 14:01:54 CST 2019}
Person{name=‘Alex’, age=21, gender=‘男’, birthday=Wed Mar 27 14:01:54 CST 2019}
Person{name=‘Alex’, age=21, gender=‘男’, birthday=Wed Mar 27 14:01:54 CST 2019}
</list
js中时间格式化的几种方法
项目中时间返回值,很过时候为毫秒值,我们需要转换成 能够看懂的时间的格式;例如:yyyy-MM-dd HH:mm:ss2.处理方法(处理方法有多种,可以传值到前端处理,也可以后台可以好之后再传递到页面)方法一:实体类中添加时间转换注解(注意时区问题)/** * 开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8") private Date startTime;方法二:js处理{ field : 'crtTime', title : '创建时间', width : 100, sortable :true, align : 'center', formatter : crtTimeFtt },function crtTimeFtt(val, row) { if (val != null) { var date = new Date(val); return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(); }}方法三:JS处理(创建公共类方法)/**************************************时间格式化处理************************************/function dateFtt(fmt,date) { //author: meizz var o = { "M+" : date.getMonth()+1, //月份 "d+" : date.getDate(), //日 "h+" : date.getHours(), //小时 "m+" : date.getMinutes(), //分 "s+" : date.getSeconds(), //秒 "q+" : Math.floor((date.getMonth()+3)/3), //季度 "S" : date.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; } 相应JS文件里面的引用//创建时间格式化显示function crtTimeFtt(value,row,index){ var crtTime = new Date(value); return top.dateFtt("yyyy-MM-dd hh:mm:ss",crtTime);//直接调用公共JS里面的时间类处理的办法 }3.总结:实现时间转换的方法有多种,怎样方便,达到项目的要求,就可
前后端时间格式
前端传毫秒 1、不加@JsonFormat 前端:1380000(毫秒) 后台:private Date trialTime; 列表返回的时间格式:毫秒 2、加@JsonFormat ① @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 前端:1380000(毫秒) 后台: @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date trialTime; 列表返回的时间格式:yyyy-MM-dd HH:mm:ss
② @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8") 前端:1380000(毫秒) 后台: @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8") private Date trialTime; 列表返回的时间格式:yyyy-MM-dd
前端传"2018-01-03T02:01:13.678Z" 1、不加@JsonFormat 前端:"2018-01-03T02:01:13.678Z" 后台:private Date trialTime; 列表返回的时间格式:毫秒 2、加@JsonFormat ① 不支持"yyyy-MM-dd HH:mm:ss"这种格式 ② 支持"yyyy-MM-dd"这种格式 前端:"2018-01-03T02:01:13.678Z" 后台: @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8") private Date trialTime; 列表返回的时间格式:yyyy-MM-dd
前端传"yyyy-MM-dd HH:mm:ss" 1、不加@JsonFormat报错 2、加@JsonFormat ① 支持"yyyy-MM-dd HH:mm:ss"这种格式 前端:"yyyy-MM-dd HH:mm:ss" 后台: @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date trialTime; 列表返回的时间格式:yyyy-MM-dd HH:mm:ss ② 不支持"yyyy-MM-dd"这种格式,因为前端传的时间格式已经限定死了
前端传"yyyy-MM-dd" 1、不加@JsonFormat (注:get请求,但是是用@RequestParam Map formData接收的,所以不影响。见贵安项目ArticleListControl中articleInfo接口) 前端:"yyyy-MM-dd" 后台:private Date trialTime; 列表返回的时间格式:毫秒 2、加@JsonFormat ① 不支持"yyyy-MM-dd HH:mm:ss"这种格式 ② 支持"yyyy-MM-dd"这种格式 前端:"yyyy-MM-dd" 后台: @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8") private Date trialTime; 列表返回的时间格式:yyyy-MM-dd
总结 Jackson不支持这种时间格式的:yyyy-MM-dd HH:mm:ss,试了一下,果然报错来了 Can not construct instance of java.util.Date from String value '2015-12-22 10:10:10': not a valid representation (error: Failed to parse Date value '2015-12-22 10:10:10': Can not parse date "2015-12-22 10:10:10": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) 看提示好像只支持这几种: "yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"
主要看前端到→后台是否需要序列化 get请求时 ① 后台用 @ModelAttribute T model 方式接收前端数据,会把传进来的参数序列化成对象T,前端传的参数有一个是String类型的 2018-12-25 时间,但是对象T中是date类型,所以如果不做转换的话会报400错误,在对象T的对应参数上加 @DateTimeFormat(pattern = "yyyy-MM-dd") 。通过@DateTimeFormat这个日期格式化注解,就可以将前端传入的字符串格式化为日期类型可以识别的内容信息了。当然也可以使用@DateTimeFormat(iso=ISO.DATE)这样子的格式化来进行处理,效果是一样的。JsonFormat适用于json方式?
② 如果后台用 @RequestParam Map formData 接收前端参数的话,即使前端传的时间是 yyyy-MM-dd 方式也不会报错,因为Map可以接收任意类型的参数
post请求时 因为post请求是用 @RequestBody
@JsonFormat与@DateTimeFormat注解的使用
Spring Boot使用@JsonProperty,@JsonIgnore,@JsonFormat注解
@JsonProperty, @JsonIgnore 和 @JsonFormat 注解都是 fasterxml jackson 里面的注解,现在也被 Spring Boot 集成了。
这里需要注意的是将对象转换成json字符串使用的方法是fasterxml.jackson提供的!!
如果使用fastjson
com.alibaba
fastjson
1.2.28
没有生效,为啥?
因为fastjson不认识@JsonProperty注解呀!所以要使用jackson自己的序列化工具方法
我们在使用上面的注解时,不需要在 pom.xml 显示的引入 fasterxml jackson 的依赖包。只需要加入如下依赖即可。
@JsonProperty
用于属性、setter / getter 方法上,属性序列化后可重命名
生成的 json 字符串就是image_width和image_height。
@JsonIgnore
属性使用此注解后,将不被序列化。
@JsonFormat
用于格式化日期
@JsonInclude,@JsonIgnoreProperties,@JsonIgnore
真实案例
{
"rowid": "111111",
"created": "2018-12-27 16:15:25",
"createdby": "1111111",
"lastupd": "2018-12-27 08:25:48",
"lastupdby": "111111",
"modificationnum": 1
}
返回Json参数字段均为小写,在接收时,需要按照标准的命名规则进行映射
解决办法:
创建接收数据对象,生成Get\Set方法:,在Set方法上,加上@JsonProperty注解,
@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把rowId属性序列化为rowid,@JsonProperty("rowid")。
Java后台传时间对象到前台后台时间正确、 前台时间相差8个小时是怎么回事?、、求大神解答
java后台传当前时间给jsp,主要的方式是将数据放在request对象中,然后在另一个页面拿到这个数据即可,代码如下:Stringname=“当前时间”;request.setAttribute(name);B.jsp:B页面通过如下代码接收说明:主要是在java代码中,把这个时间给set进去
我感觉这像是用了@JsonFormat注解,@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
8消失那么巧,会不会是时区造成的
好像spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟国内是相差8小时的,所以这里得重新设置当前项目地所在时区。@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") 里加上 timezone = "GMT+8" 就行了