Java obj與JSON互轉(jackson)

JSON 解析

常見的json解析器:

  • jsonlib
  • Gson(谷歌)
  • fastjson(阿里)
  • jackson(Spring內置)

jackson

依賴jar包

  • jackson-annotations/
  • jackson-core/
  • jackson-databind/

官網下載地址

1. Java對象轉JSON

1.1 核心對象

ObjectMapper

1.2常用轉換方法

  • writeValue(參數1, obj)
  • 參數1:
    1. File: 將obj轉換為json字符串,并保存到指定文件
    2. Write: 將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中
    3. OutputStream: 將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中
  • writeValueAsString(obj): 將obj對象轉換為JSON字符串
  • 復雜對象如List或Map轉換與普通JavaBean對象一樣。

1.3常用注解

  • @JsonIgnore: 排除屬性(加在類屬性上)
  • @JsonFormat(pattern = "yyyy-MM-dd"): 屬性值得到格式化

2.JSON轉Java對象

方法:

readValue(json字符串, obj)

3.示例

import com.fasterxml.jackson.annotation.JsonIgnore;
public class User {private String id;private String name;private String sex;private String tel;private String place;@JsonIgnoreprivate String password;// getattr....// serattr....
}
package top.junebao.test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import top.junebao.domain.User;import java.io.IOException;public class JsonTest {private ObjectMapper objectMapper = new ObjectMapper();/*** obj對象轉JSON字符串單元測試*/@Testpublic void testObjToJson() {User user = new User();user.setId("LS-N4");user.setName("公孫勝");user.setPassword("gss111111");user.setSex("男");String json = "";try {json = objectMapper.writeValueAsString(user);} catch (JsonProcessingException e) {e.printStackTrace();}System.out.println(json);}/*** json字符串轉obj單元測試*/@Testpublic void testJsonToObj() {User user = null;String json = "{\"id\":\"LS-N4\",\"name\":\"公孫勝\",\"sex\":\"男\",\"tel\":null,\"place\":null}";try {user = objectMapper.readValue(json, User.class);} catch (IOException e) {e.printStackTrace();}System.out.println(user);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457519.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457519.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457519.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何制作一個簡單的APP應用軟件?

如今隨著移動智能手機的普及,讓APP的市場一片繁榮,現在市場上的APP數量數不勝數,對于APP開發的我們很多外行人也許認為,開發APP是不是特別難,是不是只有資歷很高的程序員才能夠完成這個任務,或者說要想開發…

I/O重定向

每個進程都至少有3個信息:“標準輸入”stdin、“標準輸出”stdout、和“標準出錯”stderr。標準輸入通常來自鍵盤,標準輸出和標準錯誤輸出通常被發往屏幕(并不會保存在磁盤文件中)。有些時候,需要從文件讀取輸入&#…

java 自動裝拆箱

title: “java 自動裝拆箱” tags: Java 將基本數據類型封裝成對象的過程叫做裝箱(boxing),反之基本數據類型對應的包裝類轉換為基本數據類型的過程叫做拆箱(unboxing); 基本數據類型與其他對象的區別 基本數據類型 …

設計模式11---組合模式(Composite Pattern)

一、組合模式定義 將對象組合成樹形結構以表示“部分-整體”的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compos…

Linux 多核下綁定硬件中斷到不同 CPU(IRQ Affinity)

轉載 - Linux 多核下綁定硬件中斷到不同 CPU(IRQ Affinity) 作者 digoal 日期 2016-11-20 標簽 Linux , IRQ , 中斷 , CPU親和 , 綁定中斷處理CPU 背景 原文 http://www.vpsee.com/2010/07/load-balancing-with-irq-smp-affinity/ 原文 硬件中斷發生頻繁…

請列舉你了解的分布式鎖_這幾種常見的“分布式鎖”寫法,搞懂再也不怕面試官,安排!...

什么是分布式鎖?大家好,我是jack xu,今天跟大家聊一聊分布式鎖。首先說下什么是分布式鎖,當我們在進行下訂單減庫存,搶票,選課,搶紅包這些業務場景時,如果在此處沒有鎖的控制&#x…

leetcode 268

等差數列求值 1 class Solution {2 public:3 int missingNumber(vector<int>& nums) {4 int nnums.size();5 int kn*(n1)/2;6 for(int i0;i<n;i)7 k-nums[i];8 return k;9 } 10 }; 轉載于:https://www.cnblogs.…

301緩存重定向?301 Moved Permanently (from disk cache)

今天在寫一個博客系統時&#xff0c;發現首頁數據經常刷新不出來&#xff0c;甚至后端根本就沒有接受到這個請求&#xff0c;以為是Ajax的問題&#xff0c;但通過抓包發現Ajax請求確實已經發出去了&#xff0c;但狀態碼是 301 Moved Permanently (from disk cache),301是永久重…

Firefox 50優化Electrolysis

Mozilla正式發布Firefox 50。最新的版本中提升了來自多個內容進程用戶的用戶體驗&#xff0c;并修復了十幾個高影響的安全漏洞。\\在Firefox最新版本的變更中&#xff0c;我們注意到了它對于Electrolysis的進一步改進。Electrolysis是Mozilla實現在后臺進程中呈現和執行web相關…

ModuleNotFoundError: No module named '_ctypes' ERROR:Command errored out with exit status 1: python

Ubuntu下載 nginx 時報錯&#xff1a; ERROR: Command errored out with exit status 1:command: /usr/local/bin/python3.7 -c import sys, setuptools, tokenize; sys.argv[0] ""/tmp/pip-install-7e0xdb36/uwsgi/setup.py""; __file__""/tmp…

python opc plc_PYthon簡易OPC數據采集寫入Access

利用hollias comm opcserver 與Python實現交互。代碼如下&#xff1a;# -*- coding: utf-8 -*-from sys import *from getopt import *#from os import * 造成f open(test.txt, r) TypeError: an integer is required錯誤import signalimport sysimport osimport typesimport …

邊工作邊刷題:70天一遍leetcode: day 73

Read N Characters Given Read4 I/II 要點&#xff1a;這題的要點就是搞清楚幾個變量的內在邏輯&#xff1a;只有buffer是整4 bytes的。而client要讀的bytes&#xff08;需求&#xff09;和實際上disk上有的bytes&#xff08;供給&#xff09;都是不整的。所以&#xff0c; 循環…

javascript時間戳和日期字符串相互轉換

1 <html xmlns"http://www.w3.org/1999/xhtml">2 <head>3 <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />4 <script type"text/javascript">5 // 獲取當前時間戳(以s為單位)6 var time…

wireshark 十六進制過濾_CTF流量分析之wireshark使用

01.基本介紹在CTF比賽中&#xff0c;對于流量包的分析取證是一種十分重要的題型。通常這類題目都是會提供一個包含流量數據的pcap文件&#xff0c;參賽選手通過該文件篩選和過濾其中無關的流量信息&#xff0c;根據關鍵流量信息找出flag或者相關線索。pcap流量包的分析通常都是…

vim 插件管理

1  進入自己的vim mkdir ./bundle/vundle 2  在vimrc同級中執行 git clone https://github.com/gmarik/vundle.git ./bundle/vundle 將一些插件文件 下載到./bundle/vundle中 3  編寫自己的vim配置&#xff0c;其實很簡單 set nocompatible " be iMp…

ubuntu install wiznote

sudo add-apt-repository ppa:wiznote-team #添加官方源sudo apt-get update #更新源sudo apt-get install wiznote #安裝為知筆記

python 對象序列化 pickling_python操作文件——序列化pickling和JSON

當我們在內存中定義一個dict的時候&#xff0c;我們是可以隨時修改變量的內容的&#xff1a;>>> ddict(namewc,age28)>>>d{name: wc, age: 28}我們可以隨時修改name和age的值。但是當我們重新運行程序的時候&#xff0c;name、age的初始化值還是wc和28&#…

python實現Redis訂閱發布

Redis 發布訂閱 Redis 發布訂閱可以用在像消息通知&#xff0c;群聊&#xff0c;定向推送&#xff0c;參數刷新加載等業務場景 發布訂閱模型有三個角色&#xff1a; 發布者&#xff08;Publisher&#xff09;訂閱者(Subscriber)頻道(channel) 每個訂閱者可以訂閱多個頻道&am…

nfs的快速部署

1、nfs內核自帶協議模塊不用安裝&#xff0c;如果沒有yum安裝yum -y install nfs-utils2、配置vim /etc/exports #配置文件 此文件一般為空&#xff0c;編寫格式為&#xff1a; /share/word 192.168.31.254(rw) 192.168.31.252(ro) # 共享/share/word目錄給192.168.…

redistemplate怎么修改數據_如何使用RedisTemplate訪問Redis數據結構?

在springboot項目中&#xff0c;集成各種框架變得非常容易。下面簡單介紹一下如何在springboot項目中集成單機模式redis。集群模式也差不多&#xff0c;這里就不過多介紹了。首先你得安裝redis服務&#xff0c;無論在linux還是windows系統上。如果沒有安裝&#xff0c;請自行百…