/**
* 解析Json协议字符到Map
* 例如:{command:{"content":"value","test":100,"bool":{"Test":true}}}
* 备注:Value只是基本数据类型或Map<String,Object>类型
* @param s
* @return
*/
@SuppressWarnings
(
"unchecked"
)
public
static
Map<String, Object> parserJsonToMap(String json) {
Map<String, Object> map =
new
HashMap<String, Object>();
JSONObject jsonObject = JSONObject.fromObject(json);
Iterator<String> keys = jsonObject.keys();
while
(keys.hasNext()) {
String key = (String) keys.next();
String value = jsonObject.get(key).toString();
if
(value.startsWith(
"{"
) && value.endsWith(
"}"
)) {
map.put(key, parserJsonToMap(value));
}
else
{
map.put(key, value);
}
}
return
map;
}
private
static
Logger LOGGER = org.apache.log4j.Logger.getLogger(ParserJson.
class
);
public
static
List<String> keyList =
new
ArrayList<String>();
/**
* 解析Json Map
*
* @param map
*/
private
void
parserJsonMapTest(Map<String, Object> map) {
for
(Map.Entry<String, Object> entry : map.entrySet()) {
keyList.add(entry.getKey());
if
(String.
class
.isAssignableFrom(entry.getValue().getClass())&&Number.
class
.isAssignableFrom(entry.getValue().getClass())) {
if
(LOGGER.isDebugEnabled()) {
LOGGER.debug(
"CODE:"
+ keyList.get(keyList.size() -
1
).hashCode()
+
" key:"
+ entry.getKey() +
" Value:"
+ entry.getValue());
}
keyList.remove(keyList.size() -
1
);
}
else
{
if
(LOGGER.isDebugEnabled()) {
LOGGER.debug(
"CODE:--->"
+ keyList.get(keyList.size() -
1
)
+
" "
+ keyList.get(keyList.size() -
1
).hashCode());
}
parserJsonMapInnerTest((Map<String, Object>) entry.getValue());
}
}
keyList.remove(keyList.size() -
1
);
}
private
void
parserJsonMapInnerTest(Map<String, Object> map) {
for
(Map.Entry<String, Object> entry : map.entrySet()) {
keyList.add(entry.getKey());
if
(String.
class
.isAssignableFrom(entry.getValue().getClass())&&Number.
class
.isAssignableFrom(entry.getValue().getClass())) {
if
(LOGGER.isDebugEnabled()) {
LOGGER.debug(
"CODE:"
+ keyList.get(keyList.size() -
1
).hashCode()
+
" key:"
+ entry.getKey() +
" Value:"
+ entry.getValue());
}
keyList.remove(keyList.size() -
1
);
}
else
{
if
(LOGGER.isDebugEnabled()) {
LOGGER.debug(
"CODE:--->"
+ keyList.get(keyList.size() -
1
)
+
" "
+ keyList.get(keyList.size() -
1
).hashCode());
}
parserJsonMapInnerTest((Map<String, Object>) entry.getValue());
keyList.remove(keyList.size() -
1
);
}
}
}