如何在android中使用HashMap创建复杂的JSON?
我在创建一个Json时遇到了一个问题,这实际上是一个复杂的问题,我只需要通过HashMap创建它。我实际上在寻找一些递归函数,这可能是解决我问题的最佳方法 我需要创建的JSON看起来像如何在android中使用HashMap创建复杂的JSON?,android,json,hashmap,Android,Json,Hashmap,我在创建一个Json时遇到了一个问题,这实际上是一个复杂的问题,我只需要通过HashMap创建它。我实际上在寻找一些递归函数,这可能是解决我问题的最佳方法 我需要创建的JSON看起来像 {"pkt":{ "data2":{"z":"3", "y":"2", "x":"1"}, "data3":{"n":"3", "l":"1", "m":"2"}, "mid":"1328779096525", "data1":{"b":"2", "c":"3", "a":"1"}
{"pkt":{
"data2":{"z":"3", "y":"2", "x":"1"},
"data3":{"n":"3", "l":"1", "m":"2"},
"mid":"1328779096525",
"data1":{"b":"2", "c":"3", "a":"1"},
"msg":"10012"
}
}
有什么想法吗???我们正在使用GSON进行对象/JSON转换。这里有一个链接提供更多信息:我们使用GSON进行对象/JSON转换。以下是有关更多信息的链接:您可以这样做:
public void toJSON(Map<?, ?> map, JSONStringer stringer) throws JSONException {
stringer.object();
for (Map.Entry<?, ?> entry : map.entrySet()) {
stringer.key(String.valueOf(entry.getKey()));
toJSONValue(entry.getValue(), stringer);
}
stringer.endObject();
}
public void toJSONValue(Object value, JSONStringer stringer) throws JSONException {
if (value == null) {
stringer.value(null);
} else if (value instanceof Collection) {
toJSON((Collection<?>) value, stringer);
} else if (value instanceof Map) {
toJSON((Map<?, ?>) value, stringer);
} else if (value.getClass().isArray()) {
if (value.getClass().getComponentType().isPrimitive()) {
stringer.array();
if (value instanceof byte[]) {
for (byte b : (byte[]) value) {
stringer.value(b);
}
} else if (value instanceof short[]) {
for (short s : (short[]) value) {
stringer.value(s);
}
} else if (value instanceof int[]) {
for (int i : (int[]) value) {
stringer.value(i);
}
} else if (value instanceof float[]) {
for (float f : (float[]) value) {
stringer.value(f);
}
} else if (value instanceof double[]) {
for (double d : (double[]) value) {
stringer.value(d);
}
} else if (value instanceof char[]) {
for (char c : (char[]) value) {
stringer.value(c);
}
} else if (value instanceof boolean[]) {
for (boolean b : (boolean[]) value) {
stringer.value(b);
}
}
stringer.endArray();
} else {
toJSON((Object[]) value, stringer);
}
} else {
stringer.value(value);
}
}
public void toJSON(Object[] array, JSONStringer stringer) throws JSONException {
stringer.array();
for (Object value : array) {
toJSONValue(value, stringer);
}
stringer.endArray();
}
public void toJSON(Collection<?> collection, JSONStringer stringer) throws JSONException {
stringer.array();
for (Object value : collection) {
toJSONValue(value, stringer);
}
stringer.endArray();
}
你可以这样做:
public void toJSON(Map<?, ?> map, JSONStringer stringer) throws JSONException {
stringer.object();
for (Map.Entry<?, ?> entry : map.entrySet()) {
stringer.key(String.valueOf(entry.getKey()));
toJSONValue(entry.getValue(), stringer);
}
stringer.endObject();
}
public void toJSONValue(Object value, JSONStringer stringer) throws JSONException {
if (value == null) {
stringer.value(null);
} else if (value instanceof Collection) {
toJSON((Collection<?>) value, stringer);
} else if (value instanceof Map) {
toJSON((Map<?, ?>) value, stringer);
} else if (value.getClass().isArray()) {
if (value.getClass().getComponentType().isPrimitive()) {
stringer.array();
if (value instanceof byte[]) {
for (byte b : (byte[]) value) {
stringer.value(b);
}
} else if (value instanceof short[]) {
for (short s : (short[]) value) {
stringer.value(s);
}
} else if (value instanceof int[]) {
for (int i : (int[]) value) {
stringer.value(i);
}
} else if (value instanceof float[]) {
for (float f : (float[]) value) {
stringer.value(f);
}
} else if (value instanceof double[]) {
for (double d : (double[]) value) {
stringer.value(d);
}
} else if (value instanceof char[]) {
for (char c : (char[]) value) {
stringer.value(c);
}
} else if (value instanceof boolean[]) {
for (boolean b : (boolean[]) value) {
stringer.value(b);
}
}
stringer.endArray();
} else {
toJSON((Object[]) value, stringer);
}
} else {
stringer.value(value);
}
}
public void toJSON(Object[] array, JSONStringer stringer) throws JSONException {
stringer.array();
for (Object value : array) {
toJSONValue(value, stringer);
}
stringer.endArray();
}
public void toJSON(Collection<?> collection, JSONStringer stringer) throws JSONException {
stringer.array();
for (Object value : collection) {
toJSONValue(value, stringer);
}
stringer.endArray();
}
谢谢Jens…我也在做同样的事情,但在这方面遇到了一些问题。Nyways..我从你发布的代码中得到了我的错误。谢谢Jens..我也在做同样的事情,但在这方面遇到了一些问题。Nyways..我从你发布的代码中得到了我的错误。斯科特..使用GSN是一个很好的选择,实际上我blv是最好的,因为它是最快的…但是wat Jens回答的是我一直在寻找的东西..斯科特..使用GSN是一个很好的选择,实际上我blv是最好的,因为它是最快的…但是wat Jens回答的是我一直在寻找的东西。。
{
"pkt":{
"data2":{
"z":"3",
"y":"2",
"x":"1"
},
"mid":"1328779096525",
"data3":{
"x":"1",
"y":"2",
"z":"3"
},
"msg":"10012",
"data1":{
"b":"2",
"c":"3",
"a":"1"
}
}
}