这篇博客在我的CSDN上写了很久了,但一直没什么阅读量,
就在昨天我的一个同事在google上搜到了这篇文章,觉得挺有意思,建议我放在简书上让更多的人看到
大家也许会好奇,什么叫动态json数据,其实我也不是很确定叫这个名字,暂时先这么叫着吧,之前开发一款执法记录仪的时候(后台并不清楚如何实现),获取记录仪上的视频图片信息时,给我返回了一种独特的json数据,格式是这样的
[
{
"file1": "date1"
},
{
"file2": "date2"
},
{
"file3": "date3"
},
{
"file4": "date4"
}
......
]
看着和普通的json数据很像,但仔细一看,key和value居然全是变化的,key是文件名,value是时间,一下子没了主意,什么json解析的框架都不起作用,返的什么东西啊,我该如何拿到里面的数据……
网络上搜了很多,但其实不知道该如何所搜这个问题,苦恼了下,准备冷静下来分析,首先,我需要的格式是这样的
[
{
"file":"file1",
"date":"date1"
},
{
"file":"file2",
"date":"date2"
},
{
"file":"file3",
"date":"date3"
},
{
"file":"file4",
"date":"date4"
}
......
]
如果是这样就好办了,于是就顺着这个思路往下思考,问题的焦点就集中到了怎么将那别扭的json格式转换为自己想要的json格式,json数据的本质也就是普通的字符串,所以看看能不能用String的一些函数来处理,果然这个思路是对的,找到了一个replace方法,测试代码
public class Test {
public static void main(String[] args) {
String data = "[\n" +
" {\n" +
" \"file1\": \"date1\"\n" +
" },\n" +
" {\n" +
" \"file2\": \"date2\"\n" +
" },\n" +
" {\n" +
" \"file3\": \"date3\"\n" +
" },\n" +
" {\n" +
" \"file4\": \"date4\"\n" +
" }\n" +
"]";
data = data.replace("{\n" +
" \"","{\n" +
" \"file\":\"");
data = data.replace(": \"",",\n" +
" \"date\":\"");
System.out.println("data = " + data);
}
}
打印结果
data = [
{
"file":"file1",
"date":"date1"
},
{
"file":"file2",
"date":"date2"
},
{
"file":"file3",
"date":"date3"
},
{
"file":"file4",
"date":"date4"
}
]
Process finished with exit code 0
哈哈,通过这两行代码的转换,终于可以愉快的玩耍了
总结:有时候,换一个思路,问题并没有那么难
原文地址:java动态JSON数据解析
欢迎转载,转载请保留原文链接