Java에서 해시맵을 JSON 개체로 변환하는 방법
Java에서 해시맵을 JSON 객체로 변환하거나 캐스트하고, JSON 객체를 JSON 문자열로 변환하는 방법?
사용할 수 있는 항목:
new JSONObject(map);
주의:이것은 오직 A에게만 효과가 있을 것이다.Map<String, String>!
당신이 그것의 documentation문서화에서 얻을에서 얻을 수 있는 기타 기능있는 기타 기능 수.
http://stleary.github.io/JSON-java/index.htmlhttp://stleary.github.io/JSON-java/index.html
gson은 또한 임의로 복잡한 물체를 직렬화하는 데 사용될 수 있다.
사용 방법은 다음과 같다.
Gson gson = new Gson();
String json = gson.toJson(myObject);
Gson
자동으로자동 변환 컬렉션기 위한 기부금을 모집 전환할 것이다.JSON
배열입니다.겹겹이 쌓다 Gson고 자동으로 개인필드를직렬화할 수 있으며, 과도 필드를 자동으로 무시할 수 있다 과도 fields.gson은을 무시하고 전용 필드를 serialize 할 수 있다.
당신은변환할수 변환할 수 있있음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);
메이븐 의존성다음에 대한 축소된 종속성에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으로 변환할 수 있다.
JSONObject 라이브러리: import org.json.JSONObject;
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);
JSONObject의 maven 종속성:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
이것이 도움이 되기를 바란다.해피 코딩.
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"
}
구글의 GSON도 사용해 볼 수 있다.구글의 GSON은 Java Objects를 JSON의 표현으로 변환할 수 있는 최고의 라이브러리다.
http://code.google.com/p/google-gson/
내 경우에는 부양가족을 원하지 않았다.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;
}
언더코어-자바 라이브러리는 해시 맵이나 배열 목록을 json과 부절로 변환할 수 있다.
import com.github.underscore.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"
// }
}
}
파티에 늦었지만 해시맵 연재를 위한 GSON 애드호크 작성기 입니다.나는 json 문자열 속성으로 키-값 쌍의 지도를 작성해야 했고, 하나의 특정 유형이 정수일 것으로 예상해야 했다.이 간단한 usecase에 대한 사용자 지정JavaBean 래퍼를 만들고 싶지 않았다.
GSON JsonWriter 수업 serializer수업 몇 강력한 형식 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();
사용자 지정 형식도 필요할 그냥.gson-2.2.4.jar 도서관 190KB 바로 아래에 있지 않고 대한 잔인한 의존성 toJson()기능을 사용할 수 있다.큰 틀은 integrations 없이 모든 사용자 지정 서블릿 앱 또는 독립 실행형 응용 프로그램에 사용하기 쉽다
Gson gson = new Gson();
String json = gson.toJson(myMap);
만약 당신이 필요로 하는 코드에서 그것을 사용하세요.
Gson gsone = new Gson();
JsonObject res = gsone.toJsonTree(sqlParams).getAsJsonObject();
한 Json 도서관의 이 속성은 일반적으로 그 일, 당신 스스로 그것을 하려고 해서는 안된다.모든json 도서관은 당신이가 질문하고, json.org에 페이지 아래쪽에 자바 Json 도서관의 목록을 찾을 수 있는을 구현해야 합니다.
이 솔루션은 복잡한 JSONs과: 일한다.
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;
}
}
더 낫지 않는 것보다는 늦다.나는 만약 당신이 serialize된 목록이 있고 싶어 시위를 당길 HashMap의 리스트를 변환하는 데 GSON을 사용했다.
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);
이 이것.json
생산한다 생산한다[{"key":"value","key":"value","key":"value"}]
GSON 여기 내 일방 통행의 해결책:.
myObject = new Gson().fromJson(new Gson().toJson(myHashMap), MyClass.class);
그그를 이용하려면을 이용하려면org.json.simple.JSONObject
, Json 현악에, Json 현악에 구하기그것면 구문 분석 지도 바꿀 수 있다할 수 있는 것이 parse 지도 바꿀 수 있다.JSONObject
..
JSONObject object = (JSONObject) new JSONParser().parse(JSONObject.toJSONString(map));
나는 다른 방법으로 그것을 처리했다.
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);
이 도움이 되면 좋겠어.
고마워요.
우리는 Gson을 사용한다.
Gson gson = new Gson();
Type gsonType = new TypeToken<HashMap>(){}.getType();
String gsonString = gson.toJson(elements,gsonType);
만약 당신이 정말 HashMap이 필요하지 않으면:그런 일을 할 수 있다.
String jsonString = new JSONObject() {{
put("firstName", user.firstName);
put("lastName", user.lastName);
}}.toString();
출력:
{
"firstName": "John",
"lastName": "Doe"
}
나는 알리바바 fastjson, 쉽고 단순한:을 사용하고 있다.
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>VERSION_CODE</version>
</dependency>
그리고 수입:
import com.alibaba.fastjson.JSON;
그리고:
String text = JSON.toJSONString(obj); // serialize
VO vo = JSON.parseObject("{...}", VO.class); //unserialize
모든 것이 괜찮아요.
만약 당신이 JavaScriptObjectNotation프로세싱을 위한(javax json)합동 전략 검토 374:자바 API를 사용하고 있기 때문이 장난을 하기 같다.
JsonObjectBuilder job = Json.createObjectBuilder((Map<String, Object>) obj);
JsonObject jsonObject = job.build();
당신은-그것은 정말로 편리하다 XStream 사용할 수 있다.여기 예를 들어 봐
package com.thoughtworks.xstream.json.test;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
public class WriteTest {
public static void main(String[] args) {
HashMap<String,String> map = new HashMap<String,String>();
map.add("1", "a");
map.add("2", "b");
XStream xstream = new XStream(new JettisonMappedXmlDriver());
System.out.println(xstream.toXML(map));
}
}
만약 당신이 만약 당신이를 사용하고 있사용하고 있는net.sf.json.JSONObject
그럼못할 것 찾진그리고 방금을 찾을 수 없습니다.JSONObject(map)
그것에 생성자입니다.그것에 생성자입니다.당신은당신은을 사용해야만 한다를 사용해야만 한다.public static JSONObject fromObject( Object object )
방법.방법 이 방법을 받아들이JSON문자열, 지도, DynaBeans고 자바 빈즈도 보다 정형화.이 메서드 JSON형식 문자열, 지도, DynaBeans고 자바 빈즈를 사용합니다.
JSONObject jsonObject = JSONObject.fromObject(myMap);
만약 당신이 복잡한 물체를 사용하https://stackoverflow.com/a/24635655/2914140과https://stackoverflow.com/a/26374888/2914140.에 의하면, 당신, enableComplexMapKeySerialization()신청해야 한다
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
Map<Point, String> original = new LinkedHashMap<Point, String>();
original.put(new Point(5, 6), "a");
original.put(new Point(8, 8), "b");
System.out.println(gson.toJson(original));
출력게 될 것입니다.
{
"(5,6)": "a",
"(8,8)": "b"
}
Gson이나 JSON구문 분석 도서관을 할 필요가 없다.사용하new JSONObject(Map<String, JSONObject>).toString()
예를 들:예를 들:
/**
* convert target map to JSON string
*
* @param map the target map
* @return JSON string of the map
*/
@NonNull public String toJson(@NonNull Map<String, Target> map) {
final Map<String, JSONObject> flatMap = new HashMap<>();
for (String key : map.keySet()) {
try {
flatMap.put(key, toJsonObject(map.get(key)));
} catch (JSONException e) {
e.printStackTrace();
}
}
try {
// 2 indentSpaces for pretty printing
return new JSONObject(flatMap).toString(2);
} catch (JSONException e) {
e.printStackTrace();
return "{}";
}
}
import org.json.JSONObject;
HashMap<Object, Object> map = new HashMap<>();
String[] list={"Grader","Participant"};
String[] list1={"Assistant","intern"};
map.put("TeachingAssistant",list);
map.put("Writer",list1);
JSONObject jsonObject = new JSONObject(map);
System.out.printf(jsonObject.toString());
// Result: {"TeachingAssistant":["Grader","Participant"],"Writer":["Assistant","intern"]}
조금 더 복잡한 지도와 목록TypeToken.getParameterized 메서드를 사용하여 Gson 방법:.
우리는: 이렇게 생긴 지도도 있어.
Map<Long, List<NewFile>> map;
우리는:매개 변수 형식 이런 위에 언급된getParameterized 메서드를 사용한다.
Type listOfNewFiles = TypeToken.getParameterized(ArrayList.class, NewFile.class).getType();
Type mapOfList = TypeToken.getParameterized(LinkedHashMap.class, Long.class, listOfNewFiles).getType();
그리고 이렇게 이렇게mapOfList 개체를 사용하여:Gson 개체fromJson 메서드를 사용하다.
Map<Long, List<NewFile>> map = new Gson().fromJson(fileContent, mapOfList);
그 언급된 개체 NewFile 다음과 같이 보인다.
class NewFile
{
private long id;
private String fileName;
public void setId(final long id)
{
this.id = id;
}
public void setFileName(final String fileName)
{
this.fileName = fileName;
}
}
deserialize된 JSON다음과 같이 보인다.
{
"1": [
{
"id": 12232,
"fileName": "test.html"
},
{
"id": 12233,
"fileName": "file.txt"
},
{
"id": 12234,
"fileName": "obj.json"
}
],
"2": [
{
"id": 122321,
"fileName": "test2.html"
},
{
"id": 122332,
"fileName": "file2.txt"
},
{
"id": 122343,
"fileName": "obj2.json"
}
]
}
당신은 Gson 사용할 수 있다.이 도서관 JSON개체와자 자바 개체를 변환하는 데 간단한 메서드를 제공합니다.
예:
GsonBuilder gb = new GsonBuilder();
Gson gson = gb.serializeNulls().create();
gson.toJson(object);
때 구성 옵션이 기본 값보다 다른 설정 시 필요한 GsonBuilder 사용할 수 있다.위의 예에서, 변환 프로세스 또한 개체에서 null특성을 연재할 것입니다.
하지만, 이 방법만 제네릭이 아닌 강력한 종류에서 일한다.제네릭 형식을 위해 당신은 toJson(개체, 형식)을 사용해야 합니다.
Gson에 대한 자세한 내용 여기.
개체가 그Serializable 인터페이스를 구현해야 하는 것을 기억하라.
나를 위해 작동합니다.
import groovy.json.JsonBuilder
properties = new Properties()
properties.put("name", "zhangsan")
println new JsonBuilder(properties).toPrettyString()
때 셀레늄에서 사용자 지정 명령한 반응 deserialize 하는 나는 비슷한 문제에 직면했다.반응은 그러나 셀레늄을 내복 java.util으로 변환합니다json다.HashMap[String, Object]
만약 당신이 계단과 JSON의 play-API 친숙한, 너는 이것에서:도움이 될 거예요.
import play.api.libs.json.{JsValue, Json}
import scala.collection.JavaConversions.mapAsScalaMap
object JsonParser {
def parse(map: Map[String, Any]): JsValue = {
val values = for((key, value) <- map) yield {
value match {
case m: java.util.Map[String, _] @unchecked => Json.obj(key -> parse(m.toMap))
case m: Map[String, _] @unchecked => Json.obj(key -> parse(m))
case int: Int => Json.obj(key -> int)
case str: String => Json.obj(key -> str)
case bool: Boolean => Json.obj(key -> bool)
}
}
values.foldLeft(Json.obj())((temp, obj) => {
temp.deepMerge(obj)
})
}
}
작은 코드 설명입니다.
까지 기본 형태(String, 정수, Boolean)발견된다 이 코드 재귀적으로 그 HashMap을 통해 주의 깊게 고찰한다.이런 기본적인 유형 직접적으로 JsObject에 포장될 수 있다.는 언제 자기 반복적으로 전개되자, deepmerge이 생성된 개체 concatenates.
'@을 확인하지 않고'형식 데이터가 삭제된 경고를 돌보았다.
첫째 유효한 난독화되어 모든 개체를 변환하다.
HashMap<String, String> params = new HashMap<>();
params.put("arg1", "<b>some text</b>");
params.put("arg2", someObject.toString());
그때 한 org.json로 전체 지도를 삽입합니다.JSONObject
JSONObject postData = new JSONObject(params);
이제 여러분은 단지 개체의 toString를 호출하여 JSON 얻을 수 있다.
postData.toString()
//{"arg1":"<b>some text<\/b>" "arg2":"object output"}
새로운 JSONObject 만들기
JSONObject o = new JSONObject(postData.toString());
아니면 HTTP에 전송하는 바이트 배열로.
postData.toString().getBytes("UTF-8");
참조URL:https://stackoverflow.com/questions/12155800/how-to-convert-hashmap-to-json-object-in-java
'programing' 카테고리의 다른 글
최대 절전 모드에서 분리된 객체를 다시 연결하는 적절한 방법은 무엇인가? (0) | 2022.05.17 |
---|---|
무엇이 자바를 C보다 구문 분석하기 쉽게 하는가? (0) | 2022.05.17 |
vue.js 지연 v-if 전환 (0) | 2022.05.17 |
VueJS - AJAX 호출에서 반환된 데이터 반복 (0) | 2022.05.17 |
Vue/Vuex:배열 프록시 개체에 개체에서 발군의 공을 세우다. (0) | 2022.05.17 |