Java에서 해시 맵을 JSON 객체로 변환하거나 캐스트하고 JSON 객체를 다시 JSON 문자열로 변환하는 방법은 무엇입니까?
답변
당신이 사용할 수있는:
new JSONObject(map);
주의 : 이 기능은Map<String, String>!
설명서 http://stleary.github.io/JSON-java/index.html 에서 얻을 수있는 다른 기능
답변
Gson 을 사용하여 임의로 복잡한 객체를 직렬화 할 수도 있습니다.
사용 방법은 다음과 같습니다.
Gson gson = new Gson();
String json = gson.toJson(myObject);
Gson
컬렉션을 JSON
배열 로 자동 변환 합니다. Gson은 개인 필드를 직렬화하고 임시 필드를 자동으로 무시합니다.
답변
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) );
산출::
JSON: {
"age": 32,
"name": "Mars",
"city": "NY"
}
Google의 GSON을 사용해보십시오 .Google의 GSON은 Java 객체를 JSON 표현으로 변환하는 데 사용할 수있는 최고의 라이브러리입니다.
답변
다음과 같이 사용하여 변환 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);
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>
JSONObject
라이브러리 를 사용하는 경우 맵을 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);
Maven 종속성 JSONObject
:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
이것이 도움이되기를 바랍니다. 행복한 코딩.
답변
제 경우에는 의존성을 원하지 않았습니다. 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(", "))+"}";
답변
지도를 열거하고 키-값 쌍을 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;
}
답변
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"
// }
}
}