如何在Java中将hashmap转换或转换为JSON对象,并再次将JSON对象转换为JSON字符串?
Ank*_*kur 396
您可以使用:
new JSONObject(map);
Run Code Online (Sandbox Code Playgroud)
注意:这只适用于Map<String, String>!
您可以从其文档http://stleary.github.io/JSON-java/index.html获取其他功能
小智 156
Gson还可用于序列化任意复杂的对象.
以下是您使用它的方式:
Gson gson = new Gson();
String json = gson.toJson(myObject);
Run Code Online (Sandbox Code Playgroud)
Gson将自动将集合转换为JSON数组.Gson可以序列化私有字段并自动忽略瞬态字段.
Moh*_*ain 55
使用json的示例
Map<String, Object> data = new HashMap<String, Object>();
data.put( "name", "Mars" );
data.put( "age", 32 );
data.put( "city", "NY" );
JSONObject json = new JSONObject();
json.putAll( data );
System.out.printf( "JSON: %s", json.toString(2) );
Run Code Online (Sandbox Code Playgroud)
输出::
JSON: {
"age": 32,
"name": "Mars",
"city": "NY"
}
Run Code Online (Sandbox Code Playgroud)
您也可以尝试使用Google的GSON.Google的GSON是可用于将Java对象转换为JSON表示的最佳库.
http://code.google.com/p/google-gson/
Ank*_*jan 44
您可以转换Map为JSON使用Jackson如下:
Map<String,Object> map = new HashMap<>();
//You can convert any Object.
String[] value1 = new String[] { "value11", "value12", "value13" };
String[] value2 = new String[] { "value21", "value22", "value23" };
map.put("key1", value1);
map.put("key2", value2);
map.put("key3","string1");
map.put("key4","string2");
String json = new ObjectMapper().writeValueAsString(map);
System.out.println(json);
Run Code Online (Sandbox Code Playgroud)
Maven依赖关系Jackson:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是JSONObject库,则可以将map转换JSON为如下:
Map<String, Object> map = new HashMap<>();
// Convert a map having list of values.
String[] value1 = new String[] { "value11", "value12", "value13" };
String[] value2 = new String[] { "value21", "value22", "value23" };
map.put("key1", value1);
map.put("key2", value2);
JSONObject json = new JSONObject(map);
System.out.println(json);
Run Code Online (Sandbox Code Playgroud)
Maven依赖关系JSONObject:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助.快乐的编码.
Underscore-java库可以将哈希映射或数组列表转换为 json,反之亦然。
import com.github.underscore.lodash.U;
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("1", "a");
map.put("2", "b");
System.out.println(U.toJson(map));
// {
// "1": "a",
// "2": "b"
// }
}
}
Run Code Online (Sandbox Code Playgroud)
我们使用Gson。
Gson gson = new Gson();
Type gsonType = new TypeToken<HashMap>(){}.getType();
String gsonString = gson.toJson(elements,gsonType);
Run Code Online (Sandbox Code Playgroud)
您只需枚举映射并将键值对添加到JSONObject即可
方法 :
private JSONObject getJsonFromMap(Map<String, Object> map) throws JSONException {
JSONObject jsonData = new JSONObject();
for (String key : map.keySet()) {
Object value = map.get(key);
if (value instanceof Map<?, ?>) {
value = getJsonFromMap((Map<String, Object>) value);
}
jsonData.put(key, value);
}
return jsonData;
}
Run Code Online (Sandbox Code Playgroud)
晚会,但这是我的GSON特别编写器序列化hashmap.我必须将键值对的映射写为json字符串属性,期望一个特定的是整数类型.我不想为这个简单的用例创建自定义JavaBean包装器.
GSON JsonWriter类是易于使用的序列化程序类,包含很少的强类型writer.value()函数.
// write Map as JSON document to http servlet response
Map<String,String> sd = DAO.getSD(123);
res.setContentType("application/json; charset=UTF-8");
res.setCharacterEncoding("UTF-8");
JsonWriter writer = new JsonWriter(new OutputStreamWriter(res.getOutputStream(), "UTF-8"));
writer.beginObject();
for(String key : sd.keySet()) {
String val = sd.get(key);
writer.name(key);
if (key.equals("UniqueID") && val!=null)
writer.value(Long.parseLong(val));
else
writer.value(val);
}
writer.endObject();
writer.close();
Run Code Online (Sandbox Code Playgroud)
如果不需要任何自定义类型,我可以使用toJson()函数.gson-2.2.4.jar库不到190KB,没有任何残酷的依赖.易于在任何自定义servlet应用程序或独立应用程序上使用,无需大型框架集成.
Gson gson = new Gson();
String json = gson.toJson(myMap);
Run Code Online (Sandbox Code Playgroud)
如果您需要在代码中使用它。
Gson gsone = new Gson();
JsonObject res = gsone.toJsonTree(sqlParams).getAsJsonObject();
Run Code Online (Sandbox Code Playgroud)
就我而言,我不需要任何依赖。使用Java 8,您可以很简单地将JSON作为字符串获取:
Map<String, Object> map = new HashMap<>();
map.put("key", "value");
map.put("key2", "value2");
String json = "{"+map.entrySet().stream()
.map(e -> "\""+ e.getKey() + "\"" + ":\"" + String.valueOf(e.getValue()) + "\"")
.collect(Collectors.joining(", "))+"}";
Run Code Online (Sandbox Code Playgroud)
这是我使用 GSON 的单行解决方案:
myObject = new Gson().fromJson(new Gson().toJson(myHashMap), MyClass.class);
Run Code Online (Sandbox Code Playgroud)
对于那些使用 的用户org.json.simple.JSONObject,您可以将地图转换为 Json 字符串并解析它以获取JSONObject.
JSONObject object = (JSONObject) new JSONParser().parse(JSONObject.toJSONString(map));
Run Code Online (Sandbox Code Playgroud)
我找到了另一种方法来处理它。
Map obj=new HashMap();
obj.put("name","sonoo");
obj.put("age",new Integer(27));
obj.put("salary",new Double(600000));
String jsonText = JSONValue.toJSONString(obj);
System.out.print(jsonText);
Run Code Online (Sandbox Code Playgroud)
如果你真的不需要 HashMap 那么你可以这样做:
String jsonString = new JSONObject() {{
put("firstName", user.firstName);
put("lastName", user.lastName);
}}.toString();
Run Code Online (Sandbox Code Playgroud)
输出:
{
"firstName": "John",
"lastName": "Doe"
}
Run Code Online (Sandbox Code Playgroud)
此解决方案适用于复杂的 JSON:
public Object toJSON(Object object) throws JSONException {
if (object instanceof HashMap) {
JSONObject json = new JSONObject();
HashMap map = (HashMap) object;
for (Object key : map.keySet()) {
json.put(key.toString(), toJSON(map.get(key)));
}
return json;
} else if (object instanceof Iterable) {
JSONArray json = new JSONArray();
for (Object value : ((Iterable) object)) {
json.put(toJSON(value));
}
return json;
}
else {
return object;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
迟到总比不到好。如果您想要序列化列表,我使用GSON将 HashMap 列表转换为字符串。
List<HashMap<String, String>> list = new ArrayList<>();
HashMap<String,String> hashMap = new HashMap<>();
hashMap.add("key", "value");
hashMap.add("key", "value");
hashMap.add("key", "value");
list.add(hashMap);
String json = new Gson().toJson(list);
Run Code Online (Sandbox Code Playgroud)
这json产生[{"key":"value","key":"value","key":"value"}]
| 归档时间: |
|
| 查看次数: |
604193 次 |
| 最近记录: |