本文目錄一覽:
- 1、json文件可以直接導入資料庫嗎
- 2、LowDB 輕量級 JSON 本地資料庫
- 3、json如何獲取封裝資料庫中的數據
- 4、json數組從資料庫獲取
- 5、用Json獲取到資料庫中的值,這段代碼中要怎樣添加上表格(table))
- 6、如何使用json獲得資料庫數據
json文件可以直接導入資料庫嗎
直接讀寫文件,再把讀出來的文件內容格式化成json,再用JDBC、Mybatis或者其他框架將json數據存入資料庫。
假設實體類是這樣的:
public class ElectSet {
public String xueqi;
public String xuenian;
public String startTime;
public String endTime;
public int menshu;
public String isReadDB;
//{“xueqi”:,”xuenian”:,”startTime”:,”endTime”:,”renshu”:,”isReadDB”:}
public String getXueqi() {
return xueqi;
}
public void setXueqi(String xueqi) {
this.xueqi = xueqi;
}
public String getXuenian() {
return xuenian;
}
public void setXuenian(String xuenian) {
this.xuenian = xuenian;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public int getMenshu() {
return menshu;
}
public void setMenshu(int menshu) {
this.menshu = menshu;
}
public String getIsReadDB() {
return isReadDB;
}
public void setIsReadDB(String isReadDB) {
this.isReadDB = isReadDB;
}
}
有一個json格式的文件,存的信息如下:
Sets.json:
{“xuenian”:”2007-2008″,”xueqi”:”1″,”startTime”:”2009-07-19 08:30″,”endTime”:”2009-07-22 18:00″,”menshu”:”10″,”isReadDB”:”Y”}
具體操作:
/*
* 取出文件內容,填充對象
*/
public ElectSet findElectSet(String path){
ElectSet electset=new ElectSet();
String sets=ReadFile(path);//獲得json文件的內容
JSONObject jo=JSONObject.fromObject(sets);//格式化成json對象
//System.out.println(“————” jo);
//String name = jo.getString(“xuenian”);
//System.out.println(name);
electset.setXueqi(jo.getString(“xueqi”));
electset.setXuenian(jo.getString(“xuenian”));
electset.setStartTime(jo.getString(“startTime”));
electset.setEndTime(jo.getString(“endTime”));
electset.setMenshu(jo.getInt(“menshu”));
electset.setIsReadDB(jo.getString(“isReadDB”));
return electset;
}
//設置屬性,並保存
public boolean setElect(String path,String sets){
try {
writeFile(path,sets);
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
//讀文件,返回字元串
public String ReadFile(String path){
File file = new File(path);
BufferedReader reader = null;
String laststr = “”;
try {
//System.out.println(“以行為單位讀取文件內容,一次讀一整行:”);
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
//一次讀入一行,直到讀入null為文件結束
while ((tempString = reader.readLine()) != null) {
//顯示行號
System.out.println(“line ” line “: ” tempString);
laststr = laststr tempString;
line ;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return laststr;
}
將獲取到的字元串,入庫即可。
LowDB 輕量級 JSON 本地資料庫
作為輕量級的本地存儲方式,對於構建不依賴伺服器的小型項目,用LowDB存儲和管理數據是十分理想的選擇。在Nodejs, Electron and browser等一些小型項目中經常能看到LowDB的身影。
npm install lowdb
或者:
yarn add lowdb
const low = require(‘lowdb’);
const FileSync = require(‘lowdb/adapters/FileSync’); // 有多種適配器可選擇
const adapter = new FileSync(‘db.json’); // 申明一個適配器
const db = low(adapter);
db.defaults({posts: [], user: {}, count: 0})
.write();
db.get(‘posts’)
.push({id: 1, title: ‘lowdb is awesome’})
.write()
db.set(‘user.name’, ‘typicode’)
.write()
db.update(‘count’, n = n + 1)
.write()
運行程序會在項目中添加db.json文件,裡面存儲了添加的數據:
{
“posts”: [
{
“id”: 1,
“title”: “lowdb is awesome”
}
],
“user”: {
“name”: “typicode”
},
“count”: 1
}
lowdb是基於lodash構建的,所以可以使用任何lodash強大的函數,比如: _.get() 和 _.find(),並且可以串聯地使用:
db.get(‘users’)
.find({sex: ‘male’})
.value()
函數 功能
low(adapter) 返回一個具有特定屬性和功能的 lodash chain
db.[…].write() / .value() 寫 / 讀數據
db.getState() / .setState() 獲取 / 設置資料庫的狀態
db._ 資料庫lodash的實例,可以利用這個添加自己的函數或者第三方的mixins,比如lodash-id
db._.mixin({
second: function(array) {
return array[1]
}
})
db.get(‘posts’)
.second()
.value()
針對lowdb自帶的適配器:FileSync、FileAsync 和 LocalBrowser,有以下可選參數:
defaultValue: 文件不存在時的默認值;
serialize/deserialize: 寫之前和讀之後的操作。
const adapter = new FilSync(‘db.json’,{
serialize: (data) = encrypt(JSON.stringify(data)),
deserialize: (data) = JSON.parse(decrypt(data))
})
可以直接使用lodash的函數進行查詢。需要注意的是有些操作可能會導致原數據被修改,為了避免這種誤操作,需要使用 .cloneDeep(),操作都是惰性的,只有調用 .value()或 .write()後才會正式執行。
檢查users是是否存在
db.has(‘users’)
.value()
設置users
db.set(‘users’, [])
.write()
排序、選擇
db.get(‘users’)
.filter({sex: ‘male’})
.sortBy(‘age’)
.take(5)
.value()
獲取特定欄位
db.get(‘users’)
.map(‘name’)
.value()
獲取數量
db.get(‘users’)
.size()
.value()
獲取特定信息
db.get(‘users[0].name’)
.value()
更新信息
db.get(‘users’)
.find({name: ‘Tom’})
.assign({name: ‘Tim’})
.write()
刪除信息
db.get(‘users’)
.remove({name: ‘Time’})
.write()
移除屬性
db.unset(‘users.name)
.write()
深拷貝
db.get(‘users’)
.cloneDeep()
.value()
可以使用 shortid 和 lodash-id 為資料庫中的每一條記錄創建唯一的id索引,然後通過id檢索操作記錄:
const shortid = require(‘shortid’)
const postId = db
.get(‘posts’)
.push({ id: shortid.generate(), title: ‘low!’ })
.write()
.id
const post = db
.get(‘posts’)
.find({ id: postId })
.value()
const lodashId = require(‘lodash-id’)
const FileSync = require(‘lowdb/adapters/FileSync’)
const adapter = new FileSync(‘db.json’)
const db = low(adapter)
db._.mixin(lodashId)
// We need to set some default values, if the collection does not exist yet
// We also can store our collection
const collection = db
.defaults({ posts: [] })
.get(‘posts’)
// Insert a new post…
const newPost = collection
.insert({ title: ‘low!’ })
.write()
// …and retrieve it using its id
const post = collection
.getById(newPost.id)
.value()
low( ) 函數接受自定義的Adapter
class MyStorage {
constructor() {
// …
}
read() {
// Should return data (object or array) or a Promise
}
write(data) {
// Should return nothing or a Promise
}
}
const adapter = new MyStorage(args)
const db = low(adapter);
==============================================
英文官網介紹,更加簡潔
Lowdb 3 is a pure ESM package. If you’re having trouble importing it in your project, please read this.
You can use TypeScript to type check your data.
You can also add lodash or other utility libraries to improve lowdb.
For CLI, server and browser usage, see examples/ directory.
Lowdb has two classes (for asynchronous and synchronous adapters).
Calls adapter.read() and sets db.data .
Note: JSONFile and JSONFileSync adapters will set db.data to null if file doesn’t exist.
Calls adapter.write(db.data) .
Holds your db content. If you’re using the adapters coming with lowdb, it can be any type supported by JSON.stringify .
For example:
Adapters for reading and writing JSON files.
In-memory adapters. Useful for speeding up unit tests.
Synchronous adapter for window.localStorage .
Adapters for reading and writing text. Useful for creating custom adapters.
If you’ve published an adapter for lowdb, feel free to create a PR to add it here.
You may want to create an adapter to write db.data to YAML, XML, encrypt data, a remote storage, …
An adapter is a simple class that just needs to expose two methods:
For example, let’s say you have some async storage and want to create an adapter for it:
See src/adapters/ for more examples.
To create an adapter for another format than JSON, you can use TextFile or TextFileSync .
For example:
Lowdb doesn’t support Node’s cluster module.
If you have large JavaScript objects ( ~10-100MB ) you may hit some performance issues. This is because whenever you call db.write , the whole db.data is serialized using JSON.stringify and written to storage.
Depending on your use case, this can be fine or not. It can be mitigated by doing batch operations and calling db.write only when you need it.
If you plan to scale, it’s highly recommended to use databases like PostgreSQL or MongoDB instead.
json如何獲取封裝資料庫中的數據
直接輸出就可以了 String jsondata = “{‘a’:” + a + “,’b’:” + b + “,’c’:” + c + “}”; 如果abc是字元串就加上單引號,如 String jsondata = “{‘a’:'” + a + “‘,’b’:'” + b + “‘,’c’:'” + c + “‘}”; 如果abc是數組 String jsondata = “{‘a’:[” + a[0] + “,” + a[1] + “,” + a[2] + “],’b’:…}”; 如果abc是對象就相對複雜一點 String jsondata = “{‘a’:{‘a_paramStr’:'” + a.paramStr + “‘,’a_pramaInt’}:a.pramaInt},’b’:…}”; 當然,如果對象的成員變數很多,可以可以通過對象遍歷的方式輸出,還有包含子對象、子子對象的情況 總結如下 格式:{‘數據名’:數據值} 數據值為數字時,直接輸出 數據值為字元串時,用單引號包含值,’數據值’ 數據值為數組時,用中括弧包含,[數據值1,數據值2,…] 數據值為對象時,用大括弧包含,{‘成員名1′:成員數值1,’成員名2’:{‘成員2對象的成員1′,’成員2對象的成員1值’},…} 數據與數據之間用逗號隔開,以上 一句話,如果傳送數據很簡單可以自己輸出;如果很複雜,乖乖用三方json包吧,我真不懂為什麼抗拒別人做的車輪
json數組從資料庫獲取
直接後台查詢資料庫,把結果2,11,3,5,66,33,13,65拼接成這種字元串傳到前台,前台把js代碼改寫一下:
var obj = {
title: {
text: ‘油 耗’,
x: -20 //center
},
subtitle: {
text: ‘Oil Wear’,
x: -20
},
xAxis: {
categories: [‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’,
‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’]
},
yAxis: {
title: {
text: ‘OilWear (L)’
},
plotLines: [{
value: 0,
width: 1,
color: ‘#808080’
}]
},
tooltip: {
valueSuffix: ‘L’
},
legend: {
layout: ‘vertical’,
align: ‘right’,
verticalAlign: ‘middle’,
borderWidth: 0
},
series: [{
name: ‘油耗’ //這裡去掉逗號
//這裡不填寫data
}]
});
};
//填充數據
obj.series.data=$.makeArray(result); //result是後台傳來的字元串:2,11,3,5,66,33,13,65
//最後渲染圖形
$(‘#container’).highcharts(obj);
用Json獲取到資料庫中的值,這段代碼中要怎樣添加上表格(table))
json一般是通過js來解析的,然後在頁面上顯示,所以用Struts-tags標籤來遍歷肯定是不行的,因為標籤所取的值來自於ValeStack,然後輸入Ognl表達式得到,這裡的Json不符合這個條件。json格式的數據我們是可以通過js代碼拆分的,然而我們的table也是可以通過js代碼動態生成的,所以你動態生成table的同時把json的數據追加進table裡面就可以了。
如何使用json獲得資料庫數據
/**
*將List轉化為json字元串
*@paramlistList
*@returnStringjson格式的字元串
*/
publicstatic T String getString4List(ListT list)
{
JSONArray jsonArray = JSONArray.fromObject(list);
return jsonArray.toString();
}
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128930.html