這篇博客在我的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數據解析
歡迎轉載,轉載請保留原文鏈接