首页 > 编程知识 正文

json格式转换ruby,json格式转换为对象

时间:2023-12-27 22:28:10 阅读:327457 作者:QSSI

本文目录一览:

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 = /^(dddd)/.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

*/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。