這篇博客在我的CSDN上寫了很久了,但一直沒什么閱讀量更舞,
就在昨天我的一個同事在google上搜到了這篇文章畦幢,覺得挺有意思,建議我放在簡書上讓更多的人看到
大家也許會好奇缆蝉,什么叫動態(tài)json數(shù)據(jù)呛讲,其實我也不是很確定叫這個名字禾怠,暫時先這么叫著吧,之前開發(fā)一款執(zhí)法記錄儀的時候(后臺并不清楚如何實現(xiàn))贝搁,獲取記錄儀上的視頻圖片信息時吗氏,給我返回了一種獨(dú)特的json數(shù)據(jù),格式是這樣的
[
{
"file1": "date1"
},
{
"file2": "date2"
},
{
"file3": "date3"
},
{
"file4": "date4"
}
......
]
看著和普通的json數(shù)據(jù)很像雷逆,但仔細(xì)一看弦讽,key和value居然全是變化的,key是文件名膀哲,value是時間往产,一下子沒了主意,什么json解析的框架都不起作用某宪,返的什么東西啊仿村,我該如何拿到里面的數(shù)據(jù)……
網(wǎng)絡(luò)上搜了很多,但其實不知道該如何所搜這個問題兴喂,苦惱了下蔼囊,準(zhǔn)備冷靜下來分析,首先衣迷,我需要的格式是這樣的
[
{
"file":"file1",
"date":"date1"
},
{
"file":"file2",
"date":"date2"
},
{
"file":"file3",
"date":"date3"
},
{
"file":"file4",
"date":"date4"
}
......
]
如果是這樣就好辦了畏鼓,于是就順著這個思路往下思考,問題的焦點(diǎn)就集中到了怎么將那別扭的json格式轉(zhuǎn)換為自己想要的json格式壶谒,json數(shù)據(jù)的本質(zhì)也就是普通的字符串云矫,所以看看能不能用String的一些函數(shù)來處理,果然這個思路是對的汗菜,找到了一個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);
}
}
打印結(jié)果
data = [
{
"file":"file1",
"date":"date1"
},
{
"file":"file2",
"date":"date2"
},
{
"file":"file3",
"date":"date3"
},
{
"file":"file4",
"date":"date4"
}
]
Process finished with exit code 0
哈哈,通過這兩行代碼的轉(zhuǎn)換陨界,終于可以愉快的玩耍了
總結(jié):有時候堆缘,換一個思路,問題并沒有那么難
原文地址:java動態(tài)JSON數(shù)據(jù)解析
歡迎轉(zhuǎn)載普碎,轉(zhuǎn)載請保留原文鏈接