Java Android中的Json/JsonArray到哈希表/列表
我创建了一个方法“Json到哈希表”,反之亦然。我使用哈希表是因为“Java”中没有关联数组。我现在的问题是当json中有一个数组时。这意味着,从“Java”来看,哈希表的数组根本不起作用,但我认为解决方案是使用“List>” 我觉得这有点复杂。有什么帮助吗?这很难还是我太复杂了 Json示例:Java Android中的Json/JsonArray到哈希表/列表,java,android,json,hashtable,arrays,Java,Android,Json,Hashtable,Arrays,我创建了一个方法“Json到哈希表”,反之亦然。我使用哈希表是因为“Java”中没有关联数组。我现在的问题是当json中有一个数组时。这意味着,从“Java”来看,哈希表的数组根本不起作用,但我认为解决方案是使用“List>” 我觉得这有点复杂。有什么帮助吗?这很难还是我太复杂了 Json示例: {"Config":[{"Name":"method1","Uses":"0","Event":["Start","Play"],"Action":{"Class":"Ads","Options":{"
{"Config":[{"Name":"method1","Uses":"0","Event":["Start","Play"],"Action":{"Class":"Ads","Options":{"Class":"Webview","Url":"http:\/\/test.com\/action.php","Time":"10"}}},{"Name":"method2","Uses":"12","Event":["Loading"],"MaxTimes":"5","Options":{"Class":"Ads"}}]}
查看:
我的代码:
public Hashtable<?, ?> JSonDecode(String data) {
Hashtable<String, Object> htJS = new Hashtable<String, Object>();
try {
JSONObject objJS = new JSONObject(data);
Iterator<String> it = objJS.keys();
String key = null;
Object value = null;
while (it.hasNext()) {
key = it.next();
value = objJS.get(key);
if (value instanceof JSONObject) {
value = JSonObjectToHashtable(value.toString());
}
if (value instanceof JSONArray) {
value = JSonArrayToHashtable(value.toString());
}
htJS.put((String) key, value);
}
} catch (JSONException e) {
e.printStackTrace();
// No valid json
return null;
}
return htJS;
}
public Hashtable<?, ?> JSonObjectToHashtable(String data) {
Hashtable<String, Object> htJS = new Hashtable<String, Object>();
JSONObject objJS;
try {
objJS = new JSONObject(data);
Iterator<String> it = objJS.keys();
String key = null;
Object value = null;
while (it.hasNext()) {
key = it.next();
value = objJS.get(key);
if (value instanceof JSONObject) {
value = JSonObjectToHashtable(value.toString());
}
htJS.put((String) key, value);
}
} catch (JSONException e) {
e.printStackTrace();
}
return htJS;
}
public List<Map<String, Object>> JSonArrayToHashtable(String data) {
List<Map<String, Object>> listMap = new ArrayList<Map<String,Object>>();
Map<String,Object> entry = new HashMap<String,Object>();
JSONArray objJSA;
try {
objJSA = new JSONArray(data);
for (int i = 0; i < objJSA.length(); i++) {
JSONObject objJS = objJSA.getJSONObject(i);
Iterator<String> it = objJS.keys();
String key = null;
Object value = null;
while (it.hasNext()) {
key = it.next();
value = objJS.get(key);
if (value instanceof JSONObject) {
value = JSonObjectToHashtable(value.toString());
}
entry.put((String) key, value);
}
listMap.add(entry);
entry = new HashMap<String,Object>();
}
} catch (JSONException e) {
e.printStackTrace();
}
return listMap;
}
公共哈希表JSonDecode(字符串数据){
Hashtable htJS=新的Hashtable();
试一试{
JSONObject objJS=新的JSONObject(数据);
迭代器it=objJS.keys();
字符串键=null;
对象值=空;
while(it.hasNext()){
key=it.next();
value=objJS.get(key);
if(JSONObject的值实例){
value=JSonObjectToHashtable(value.toString());
}
if(JSONArray的值实例){
value=JSonArrayToHashtable(value.toString());
}
put((字符串)键,值);
}
}捕获(JSONException e){
e、 printStackTrace();
//没有有效的json
返回null;
}
返回htJS;
}
公共哈希表JSonObjectToHashtable(字符串数据){
Hashtable htJS=新的Hashtable();
JSONObject对象对象;
试一试{
objJS=新的JSONObject(数据);
迭代器it=objJS.keys();
字符串键=null;
对象值=空;
while(it.hasNext()){
key=it.next();
value=objJS.get(key);
if(JSONObject的值实例){
value=JSonObjectToHashtable(value.toString());
}
put((字符串)键,值);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回htJS;
}
公共列表JSonArrayToHashtable(字符串数据){
List listMap=new ArrayList();
Map entry=newhashmap();
JSONArray objJSA;
试一试{
objJSA=新的JSONArray(数据);
for(int i=0;i
映射(哈希表)API类似于JSONObject API。除非应用程序一致地使用映射,否则实际上不需要将JSONObject转换为映射
如果需要将JSONObject转换为Map,则Map可以是Map
,其中Object可以是以下类型之一:
- 串
- 基元(整数、浮点等)
- 地图
- 上述树类型的集合(数组、列表等)