本文目錄一覽:
ruby+怎麼生成json文件
原始數據為csv文件:
1001,夾餅回鍋肉,1,份,28,豬肉、蒜苔、夾餅,
1002,香芋地瓜球,1,例,22,地瓜,
1003,腰果蝦仁,1,例,38,蝦仁、腰果、西芹,
1004,鮑汁茄花,1,例,18,,
要求:
生成dishes文件夾 內部生成 id號.json 文件, 並生成一個 id號 文件夾,裡面有一個images文件夾
用ruby原始方法:
File.open(“fake_dishes.csv”) do |file|
Dir.mkdir(“dishes”)
file.each_line do |line|
#puts line
dish_id = /^(\d\d\d\d)/.match(line) #正則匹配前四位數字id,並用id命名文件夾
#puts dish_id
json = File.open(“dishes/#{dish_id}.json”,”w+”)
json.puts(line) #僅生成一行信息 無法生成json格式
Dir.mkdir(“dishes/#{dish_id}”) #生成文件夾而已
Dir.mkdir(“dishes/#{dish_id}/images”) #生成文件夾而已
json.close
end
end
用ruby內置的csv方法:
require ‘csv’
Dir.mkdir(“dishes”)
CSV.open(‘fake_dishes.csv’, ‘r’) do |file|
json = File.open(“dishes/#{file[0]}.json”,”w+”)
json.puts( “
{
\”id\”: #{file[0]},
\”name\”: \”#{file[1]}\”,
\”categoryMenu\”: #{file[2]},
\”unit\”: \”#{file[3]}\”,
\”price\”: #{file[4]},
\”main\”: \”#{file[5]}\”,
\”adjuvant\”: \”#{file[6]}\”
}
“)
Dir.mkdir(“dishes/#{file[0]}”) #生成文件夾而已
Dir.mkdir(“dishes/#{file[0]}/images”) #生成文件夾而已
end
可以看出 用csv方法使得生成json更加簡單了!
json轉換格式
var results = [], arr = {} //arr就是你的json數組,results是轉後的結果;
for (var i in arr.success) {
var objs = arr.success[i];
for(var j in objs){
if(results[j]==undefined){
results[j]=[];
}
var obj = objs[j];
results[j].push(obj.t)
}
}
以下是運行結果,你的json代碼有重複的C1
json格式怎麼轉換
可以先轉換為json對象再進行轉換。
json格式都是使用鍵值對的結構,所以需要轉換為其他格式都可以對json對象進行遍歷處理。
另外可以使用正則表達式進行特定的轉換,但是一般不推薦這樣做。
如何將ruby的hash轉為json字符串
*nix系系統:
ES(Unix)
例子: IvS7aeT4NzQPM
說明:Linux或者其他linux內核系統中
長度: 13 個字符
描述:第1、2位為salt,例子中的’Iv’位salt,後面的為hash值
系統:MD5(Unix)
例子:$1$12345678$XM4P3PrKBgKNnTaqG9P0T/
說明:Linux或者其他linux內核系統中
長度:34個字符
描述:開始的$1$位為加密標誌,後面8位12345678為加密使用的salt,後面的為hash
加密算法:2000次循環調用MD5加密
系統:SHA-512(Unix)
例子:$6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm
說明:Linux或者其他linux內核系統中
長度: 13 個字符
描述:開始的$6$位為加密標誌,後面8位為salt,後面的為hash
加密算法:5000次的SHA-512加密
系統:SHA-256(Unix)
例子:$5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi
說明:Linux或者其他linux內核系統中
長度: 55 個字符
描述:開始的$5$位為加密標誌,後面8位為salt,後面的為hash
加密算法:5000次的SHA-256加密
系統:MD5(APR)
例子:$apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.
說明:Linux或者其他linux內核系統中
長度:37個字符
描述:開始的$apr1$位為加密標誌,後面8位為salt,後面的為hash
加密算法:2000次循環調用MD5加密
windows系統:
windows
例子:Admin:b474d48cdfc4974d86ef4d24904cdd91
長度:98個字符
加密算法:MD4(MD4(Unicode($pass)).Unicode(strtolower($username)))
mysql
系統:mysql
例子:606717496665bcba
說明:老版本的MySql中
長度:8字節(16個字符)
說明:包括兩個字節,且每個字的值不超過0x7fffffff
系統:MySQL5
例子:*E6CC90B878B948C35E92B003C792C46C58C4AF40
說明:較新版本的MySQL
長度:20字節(40位)
加密算法:SHA-1(SHA-1($pass))
其他系統:
系統:MD5(WordPress)
例子:$P$B123456780BhGFYSlUqGyE6ErKErL01
說明:WordPress使用的md5
長度:34個字符
描述:$P$表示加密類型,然後跟着一位字符,經常是字符‘B’,後面是8位salt,後面是就是hash
加密算法:8192次md5循環加密
系統:MD5(phpBB3)
說明:phpBB 3.x.x.使用
例子:$H$9123456785DAERgALpsri.D9z3ht120
長度:34個字符
描述:開始的$H$為加密標誌,後面跟着一個字符,一般的都是字符‘9’,然後是8位salt,然後是hash 值
加密算法:2048次循環調用MD5加密
系統:RAdmin v2.x
說明:Remote Administrator v2.x版本中
例子:5e32cceaafed5cc80866737dfb212d7f
長度:16字節(32個字符)
加密算法:字符用0填充到100字節後,將填充過後的字符經過md5加密得到(32位值)
md5加密
標準MD5
例子:c4ca4238a0b923820dcc509a6f75849b
使用範圍:phpBB v2.x, Joomla 的 1.0.13版本前,及其他cmd
長度:16個字符
其他的加salt及變形類似:
md5($salt.$pass)
例子:f190ce9ac8445d249747cab7be43f7d5:12
md5(md5($pass))
例子:28c8edde3d61a0411511d3b1866f0636
md5(md5($pass).$salt)
例子:6011527690eddca23580955c216b1fd2:wQ6
md5(md5($salt).md5($pass))
例子: 81f87275dd805aa018df8befe09fe9f8:wH6_S
md5(md5($salt).$pass)
例子: 816a14db44578f516cbaef25bd8d8296:1234
如何將json數據轉換為常見的數據格式
從json數組中得到java數組,可以對該數組進行轉化,如將JSONArray轉化為String型、Long型、Double型、Integer型、Date型等等。
分別採用jsonArray下的getString(index)、getLong(index)、getDouble(index)、getInt(index)等方法。
同樣,如果要獲取java數組中的元素,只需要遍歷該數組。
Java代碼 收藏代碼
/**
* 將json數組轉化為Long型
* @param str
* @return
*/
public static Long[] getJsonToLongArray(String str) {
JSONArray jsonArray = JSONArray.fromObject(str);
Long[] arr=new Long[jsonArray.size()];
for(int i=0;ijsonArray.size();i++){
arr[i]=jsonArray.getLong(i);
System.out.println(arr[i]);
}
return arr;
}
/**
* 將json數組轉化為String型
* @param str
* @return
*/
public static String[] getJsonToStringArray(String str) {
JSONArray jsonArray = JSONArray.fromObject(str);
String[] arr=new String[jsonArray.size()];
for(int i=0;ijsonArray.size();i++){
arr[i]=jsonArray.getString(i);
System.out.println(arr[i]);
}
return arr;
}
/**
* 將json數組轉化為Double型
* @param str
* @return
*/
public static Double[] getJsonToDoubleArray(String str) {
JSONArray jsonArray = JSONArray.fromObject(str);
Double[] arr=new Double[jsonArray.size()];
for(int i=0;ijsonArray.size();i++){
arr[i]=jsonArray.getDouble(i);
}
return arr;
}
/**
* 將json數組轉化為Date型
* @param str
* @return
*/
public static Date[] getJsonToDateArray(String jsonString) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
Date[] dateArray = new Date[jsonArray.size()];
String dateString;
Date date;
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
for (int i = 0; i jsonArray.size(); i++) {
dateString = jsonArray.getString(i);
try {
date=sdf.parse(dateString);
dateArray[i] = date;
} catch (Exception e) {
e.printStackTrace();
}
}
return dateArray;
}
public static void main(String[] args) {
JSONArray jsonLongs = new JSONArray();
jsonLongs.add(0, “111”);
jsonLongs.add(1, “222.25”);
jsonLongs.add(2, new Long(333));
jsonLongs.add(3, 444);
Long[] log=getJsonToLongArray(jsonLongs.toString());
for(int i=0;ilog.length;i++){
System.out.println(log[i]);
}
JSONArray jsonStrs = new JSONArray();
jsonStrs.add(0, “2011-01-01”);
jsonStrs.add(1, “2011-01-03”);
jsonStrs.add(2, “2011-01-04 11:11:11”);
Date[] d=getJsonToDateArray(jsonStrs.toString());
for(int i=0;id.length;i++){
System.out.println(d[i]);
}
}
/*結果如下:
* 111
* 222
* 333
* 444
*
* Sat Jan 01 00:00:00 CST 2011
* Mon Jan 03 00:00:00 CST 2011
* Tue Jan 04 00:00:00 CST 2011
*/
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/256325.html