图片-小白之家
图片-小白之家
图片-小白之家
图片-小白之家

怎么解析json格式(如何解析json文件数据)

今天在工作中在调用办法时,回来的是一个json格局的数据,在这儿记录一下如何解析这个json,获取里边想要的数据。

这儿调用的是一个办法如下:

DataResultdataResult=authServiceClient.queryUserByUserId(Long.parseLong(userId));

回来的dataResult格局如下(再插入一张图片吧,更直观一些,格局是一样的,不要在乎数据是否共同):

{

“isSuccessful”:true,

“result”:{

“bizSeqNo”:“19101720001015300118160256043161”,

“code”:“0”,

“faceId”:“717fc2a9f097aaff35c79ef5570b5017”,

“msg”:“请求成功”,

“orderNo”:“db2ab07091284b9d8df3e337f6130669”,

“sign”:“13E1BDDC039EB5DCFA4FF0C2021A864B9FC0BD73”,

“transactionTime”:“20191017181602”

},

“status”:{

“statusCode”:“000000”

}

}

那怎样获取里边的数据呢?

1,先将dataResult转换成String字符串

Strings=JSONObject.toJSONString(dataResult);

2,然后将String字符串转换成json目标,获取最外层的值

JSONObjectresult=JSONObject.parseObject(s).getJSONObject(“result”);

最后就是获取最里层的值

StringrealName=result.getString(“realName”);

这样就获取到了最里边的值了。
图片[1]-怎么解析json格式(如何解析json文件数据)-小白之家,如何解析json文件数据,因为剖析的数据格局为JSON格局,既占空间,并且剖析时也非常的不方便,所以,咱们需求对JSON格局

的数据进行解析,使其符合R言语剖析所需求的数据格局,如data.frame,list等。

在R言语的包库中,现已有人对JSON格局的解析做了完整的包jsonlite,这极大地减轻了剖析人员的工作压力。

jsonlite包中有以下几个函数

1、flatten

其间flatten函数是用来处理JSON中含有内嵌表格的状况,这种JSON文件解析为data.frame时,会在data.frame中

的某一列或多个列中别的包括一个data.frame。flatten函数能够将这种data.frame转换为一个2维的列表结构。通俗

点讲,便是讲内嵌表格的特点作为外置大表格的特点,组成一个维数变大了的表格。例如

上图的x表格,stats为一个内嵌表格,具有3个特点。

通过flatten(x)函数转化后,变为一个表格

2、prettify,minify

prettify是一个美化函数,对json密集的json格局,通过添加空白,对格局进行标准化,这样咱们在调查json数据时会比较方便。

例如:

minify是一个压缩函数,与prettify做的工作正好相反,其效果如下

这两个函数运用都非常简略,仅需求一个JSON对象即可,能够从toJSON函数获得

3、rbind.pages

这是一个兼并函数,依据官方文档的说法,它能够将多个data.frame兼并为1个data.frame。

这个函数非常只能,能够自动识别多个data.frame的特点是否相同,若相同,则按行兼并,若不同,则将相同的地方按行兼并,不同的特点按列兼并

例如:

x<-data.frame(foo=rnorm(3),bar=c(TRUE,FALSE,TRUE))

y<-data.frame(foo=rnorm(2),bar=c(“blue”,”red”))

rbind.pages(list(x,y))

直接按行兼并了。

x<-data.frame(foo=rnorm(3),bar=c(TRUE,FALSE,TRUE))

y<-data.frame(foo=rnorm(2),col=c(“blue”,”red”))

rbind.pages(list(x,y))

对foo按行兼并了,而col特点是依照列兼并的,没有的部分用NA替代。

4、serializeJSON

将一个R的对象序列化为一个JSON数据集。

5、stream_in,stream_out

利用流文件来处理JSON格局的数据解析使命。这种办法能够针对数据量非常大的状况。

stream_in(con,handler,pagesize=500,verbose=TRUE,…)

其间con为一个连接对象,能够是一个网络ur,也能够是一个文件途径

handler是一个自定义函数,pagesize用来指定咱们从文件中要读取的文件行数。

verbose=T,设置是否打印出处理行数

stream_out(x,con=stdout(),pagesize=500,verbose=TRUE,…)

x为一个需求输出为json数据集的对象,目前只支持data.frame

5、toJSON,fromJSON

与stream_in和stream_out的功用类似,toJSON是转化为JSON格局,fromJSON是将JSON格局数据集转化为

R中的格局,一般为list.

具体运用办法能够查帮助文档。

其间fromJSON在读取多行JSON数据时会报错,只能单行读取数据。

总结

进行JSON格局数据解析时,没有特殊要求,建议运用stream_in函数。假如希望依照自己的想法来解析,能够运用fromJSON

按行解析,然后对字符串依照自己的想法处理,如加密,解密等。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

图片-小白之家
图片-小白之家