Json定址工具類

2021-10-05 02:27:26 字數 2833 閱讀 4881

在專案使用中,經常使用json的反序列化獲取某個值,如果某個值的路徑比較深,除了編寫工作量變大和風險擴大外,還有就是**不夠整潔。抽空寫了個根據位址定址json內容中的某個值的工具類。

說明:1.工具類使用google gson,有興趣的可以使用其他json序列號工具改造。大概流程都一樣

private static final string json_array_format = "(.)*(\\[(\\d)+])$";

/*** 根據路徑獲取json物件的值

* 約定:

* 路徑格式:下層用點代表 陣列用[index]代表

* 舉例:

* a.b[1].c

* [0].a.c

* a[1].b

* a.

* [0]

** @param json

* @param path

* @return object 如果獲取不到 返回null

*/public static t getobjectgson4path(string json, string path, classtclass) ", path);

return null;

}try catch (jsonsyntaxexception e) value", tclass.getname());

return null;}}

/*** 根據路徑獲取json物件的值

* 約定:

* 路徑格式:下層用點代表 陣列用[index]代表

* 舉例:

* a.b[1].c

* [0].a.c

* a[1].b

* a.

* [0]

** @param json

* @param path

* @return list 如果獲取不到 返回null

*/public static listgetlistgson4path(string json, string path, classtclass) ", path);

return null;

}if (!value4path.isjsonarray())

jsonarray asjsonarray = value4path.getasjsonarray();

arraylistobjects = new arraylist<>(asjsonarray.size());

try

} catch (jsonsyntaxexception e) value", tclass.getname());

return null;

}return objects;

}private static jsonelement getvalue4path(string content, string path) ,path={}", content, path);

if (stringutils.isblank(path))

if (!isjsonstr(content))

jsonparser parser = new jsonparser();

jsonelement parse = parser.parse(content);

string split = path.split("\\.");

stringbuilder stringbuilder = new stringbuilder();

for (string s : split) catch (exception e) ", path);

return null;}}

return parse;

}private static jsonelement parsejson(jsonelement jsonelement, string childpath, stringbuilder sb)

if (stringutils.isblank(childpath))

matcher matcher = pattern.compile(json_array_format).matcher(childpath);

if (matcher.find())

string s = group.replaceall("\\[", "\\\\[");

string split1 = childpath.split(s);

string key = null;

if (null == split1 || split1.length == 0) else

string index = group.substring(1, group.length() - 1);

if (stringutils.isblank(key)) ", sb.substring(1));

return null;

}jsonarray asjsonarray = jsonelement.getasjsonarray();

jsonelement res = asjsonarray.get(integer.valueof(index));

return res;

} else

} else

}public static void main(string args) ,\"id\":123456,\"date\":\"2013-4-13 12: 36: 54\"}";

boolean objectgson4path12 = getobjectgson4path(str12, "additionjson.needpush", boolean.class);

system.out.println(objectgson4path12);

}

json工具類,型別轉換

public class jsonutil 物件轉換為json字串 param obj 待轉換物件 return json字串 throws exception public static string tojson object obj throws exception 物件轉換為json字串 p...

spring MVC 返回JSON物件工具類

package com.wlwq.workers.controller.enums 定義響應的狀態碼 author zgz public enum responsecode public int getcode public void setcode int code public string g...

JSON 操作工具類

slf4j public class jsonutils catch ioexception e json,e throw new customexception 資料格式錯誤 return result 物件轉換為json字串 param obj 帶轉換物件 return json字串 publi...