JsonObject를 문자열로 변환


83
{
    "data": 
    {
        "map":
        {
            "allowNestedValues": true,
            "create": "2012-12-11 15:16:13",
            "title": "test201212110004",
            "transitions": []
        }
    },
    "msg": "success",
    "code": "0"
}

위는 JsonObject, dataJsonObject.

아시다시피 String같은 "msg":"success"것으로 변환하는 방법은 data의 값 외부에 큰 따옴표를 직접 추가 할 수 없습니다 .


3
이해가 안 돼요 ... 당신이하려는 일을 설명하는 코드 스 니펫을 바꿔 줄 수 있나요?
sp00m

4
JsonObject.getString ( "msg");
Nicolas Tyler

\"원하는 경우 백 슬래시로 큰 따옴표를 추가 할 수 있습니다 . 문제 / 질문을 추가하십시오!
Benjamin Schwalb

1
그 인스턴스 org.json.JSONObject입니까? 그렇다면 간단히의 toString()메서드를 호출 JSONObject하여 JSONObject.
Stanley

3
3 년 이상 후에 여기에 도착한 사람들이 유용하다고 생각하는 것은 요청한 내용과 전혀 관련이없는 것 같습니다. 그리고 질문이 명확 해지는 데 도움이 된 지 오래 된 것 같습니다. 원래 질문은 @JayZhang이 데이터가 내부 json 값의 문자열 표현이되도록 개체를 평평하게 만들고 싶었다는 것입니다. 그 방법에 대해 아무도 대답하지 않은 것 같습니다. 몇 년 후에 그렇게하는 것은 다른 사람에게 아무런 가치가 없을 것입니다. 사람들은 json을 문자열로 변환하는 검색에서 착수하고 혼란스러운 Q & A 세션에서 가장 잘 삭제됩니다.
dlamblin

답변:


159

JSONObject를 문자열로 변환하는 내장 메소드가 있습니다. 그것을 사용하지 않는 이유 :

JSONObject json = new JSONObject();

json.toString();

{ "data": "{"map ": {"allowNestedValues ​​": true,"pdId ": 168543,"source ":" "}}", "msg": "success", "code": "0"}
Jay Zhang

응답 문자열에 \ \ \ 슬래시가 표시됩니다. 점점없이 JSON 객체로 변환하는 방법 \ \ \ 슬래시
Onkar Musale

@Onkar는 코드 조각과 함께 문자열 샘플을 공유합니다.
Tanu Garg

이 스레드와 비슷합니다. 그러나 답을 찾을 수 없습니다. stackoverflow.com/q/16563579/8098322
Onkar Musale

{ "date": "2013/5/15"} import org.json.JSONObject를 사용하고 있습니까? 나를 위해 잘 작동합니다. 정확한 샘플을 공유하십시오. JSONObject json = 새로운 JSONObject (); {json.put ( "date", "2013/5/15"); } catch (JSONException e) {// TODO 자동 생성 된 catch 블록 e.printStackTrace (); } System.out.println (json.toString ());
Tanu Garg

14

당신이 사용할 수있는:

JSONObject jsonObject = new JSONObject();
jsonObject.toString();

특정 값을 얻으려면 다음을 사용할 수 있습니다.

jsonObject.getString("msg");

또는 정수 값

jsonObject.getInt("codeNum");

jsonObject.optString ( "msg") 및 jsonObject.optInt ( "codeNum")을 사용하는 것이 더 좋습니다. getString () 또는 getInt ()를 사용하고 msg 또는 codeNum 값이 null이면 오류가 발생하고 프로그램. 내가 언급 한 방법과의 유일한 차이점은 값이 null이면 오류가 발생하지 않는다는 것입니다.
User1


4

Gson 변환기를 사용해 json.stringify와 같은 정확한 변환을 얻을 수 있습니다.

val jsonString:String = jsonObject.toString()
val gson:Gson = GsonBuilder().setPrettyPrinting().create()
val json:JsonElement = gson.fromJson(jsonString,JsonElement.class)
val jsonInString:String= gson.toJson(json)
println(jsonInString)

1

괄호 밖에서 따옴표를 추가하고 내부 따옴표 교체 {}로를\"

그래서: "{\"data\":{..... }"


0
JSONObject metadata = (JSONObject) data.get("map"); //for example
String jsonString = metadata.**toJSONString()**;

JSONObject json = (JSONObject) JSONValue.parse (jsonData); JSONObject 데이터 = (JSONObject) json.get ( "data"); json 데이터를 구문 분석 한 후 나중에 데이터 객체에 액세스하여 데이터를 json 문자열에 "매핑"해야합니다.
Hakan Anlamaz 2017

-2
     This should get all the values from the above JsonObject  
     System.out.println(jsonObj.get("msg"));
     System.out.println(jsonObj.get("code"));

     JsonObject obj= jsonObj.get("data").getAsJsonObject().get("map").getAsJsonObject();
     System.out.println(obj.get("allowNestedValues"));
     System.out.println(obj.get("create"));
     System.out.println(obj.get("title"));
     System.out.println(obj.get("transitions"));

이것은 질문에 대한 답이 아닙니다.
ralfe

-2

신뢰할 수있는 라이브러리 GSON을 사용할 수 있습니다.

private static final Type DATA_TYPE_JSON = 
        new TypeToken<JSONObject>() {}.getType();           
JSONObject orderJSON = new JSONObject();
orderJSON.put("noOfLayers", "2");
orderJSON.put("baseMaterial", "mat");
System.out.println("JSON == "+orderJSON.toString());
String dataAsJson = new Gson().toJson(orderJSON, DATA_TYPE_JSON);
System.out.println("Value of dataAsJson == "+dataAsJson.toString());
String data = new Gson().toJson(dataAsJson);
System.out.println("Value of jsonString == "+data.toString());

-5
 var data= {"data": {"map":{"allowNestedValues": true,"create": "2012-12-11 15:16:13","title": "test201212110004","transitions": []}},"msg": "success","code": "0"}

o / p :

Object {data: Object, msg: "success", code: "0"}

JSON.stringify를 사용하여 전체 데이터를 아래와 같이 문자열로 변환하십시오.

var stringData = JSON.stringify(data);

o / p :

"{"data":{"map":{"allowNestedValues":true,"create":"2012-12-11 15:16:13","title":"test201212110004","transitions":[]}},"msg":"success","code":"0"}"

JSON.parse를 사용하여 전체 문자열 객체를 아래와 같이 JSON 객체로 변환 합니다.

var orgdata = JSON.parse(stringData);

o / p :

Object {data: Object, msg: "success", code: "0"}

-7

나는 이것이 필요하다고 생각한다.

다음 JSON과 같은 샘플 이 있다고 가정합니다 .

{"ParamOne":"InnerParamOne":"InnerParamOneValue","InnerParamTwo":"InnerParamTwoValue","InnerParamThree":"InnerParamThreeValue","InnerParamFour":"InnerParamFourValue","InnerParamFive":"InnerParamFiveValue"}}

문자열로 변환 :

String response = {\"ParamOne\":{\"InnerParamOne\":\"InnerParamOneValue\",\"InnerParamTwo\":\"InnerParamTwoValue\",\"InnerParamThree\":\"InnerParamThreeValue\",\"InnerParamFour\":\"InnerParamFourValue\",\"InnerParamFive\":\"InnerParamFiveValue\"}} ;

"를 \"로 바꾸십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.