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

Выше JsonObject, то data является JsonObject.Преобразование JSONObject в строку

Как его преобразовать в String, как "msg":"success", как вы знаете, я не могу напрямую добавить двойные кавычки за пределы значения data.

+2

Я не могу получить его ... Не могли бы вы перефразировать и дать (даже нетрудовые) фрагменты кода, иллюстрирующий то, что вы пытаетесь сделать? – sp00m

+3

JsonObject.getString ("msg"); –

+0

Вы можете добавить двойные кавычки с обратным слэшем '\ '', если это то, что вы хотите. Пожалуйста, добавьте свою проблему/вопрос! –

ответ

5

вы можете использовать

JsonObject.getString("msg"); 
+0

теперь это «данные»: {...}, в то время как i хотите «данные»: «{...}» –

65

@hsz мы имеем inbuild метод для преобразования JSONObject в строку. Почему бы вам не использовать это.

JSONObject json = new JSONObject(); 
    json.toString(); 
+0

{ "данные": \t \t "{ "карта": { "allowNestedValues": правда, "pdId": 168543, "источник": "" } }", "MSG": " успех ", " код ":" 0 " } –

+0

извините, возможно, я не ясно выразил свою проблему, –

+0

теперь это« данные »: {.....}, в то время как я хочу« данные »:« { ....} " –

-4

Я думаю, что вам это нужно:

Предположим, у вас есть образец 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\"}} ; 

Просто заменить "\"

1

Добавить двойные кавычки за скобки и заменить двойные кавычки внутри {} с \"

Итак: "{\"data\":{..... }"

0
 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")); 
+0

это не отвечает на вопрос. – ralfe

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

не могли бы вы объяснить этот код? – rjdkolb

+0

JSONObject json = (JSONObject) JSONValue.parse (jsonData); JSONObject data = (JSONObject) json.get ("data"); После того, как вы проанализировали данные json, вам нужно получить доступ к объекту данных, затем получить данные «map» в строку json. – Hakan

-3
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); 

о/р:

"{"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); 

о/р:

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

Допустим, вы припасли, что ответ в JSONObject в следующем POJO. чтобы получить его как строку, выполните следующие действия:

class MyPojo { 
    private JSONObject jsonObject; 

    @JsonRawValue 
    @JsonInclude(JsonInclude.Include.NON_NULL) 
    @JsonProperty(value = "jsonString") 
    public String getJsonObject() 
    { 
     return jsonObject.toString(); 
    } 
} 

Теперь myPojo.getJsonOBject(); даст вам JSON как строку.

"jsonString" будет именем json Property, и значение будет вашим json.

import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonRawValue; 
0

Вы можете использовать надежные библиотеки 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()); 
Смежные вопросы