【问题标题】:Convert JsonObject to String将 JsonObject 转换为字符串
【发布时间】:2013-07-15 09:54:05
【问题描述】:
{
    "data": 
    {
        "map":
        {
            "allowNestedValues": true,
            "create": "2012-12-11 15:16:13",
            "title": "test201212110004",
            "transitions": []
        }
    },
    "msg": "success",
    "code": "0"
}

上面是JsonObjectdataJsonObject

如您所知,如何将其转换为"msg":"success" 之类的String,我不能直接在data 的值之外添加双引号。

【问题讨论】:

  • 我无法理解...您能否改写一下并给出(甚至不工作的)代码 sn-ps 来说明您正在尝试做什么?
  • JsonObject.getString("msg");
  • 如果你想要的话,你可以用反斜杠 \" 添加双引号。请添加您的问题/疑问!
  • 这是org.json.JSONObject 的一个实例吗?如果是,您可以简单地调用JSONObjecttoString() 方法来获取JSONObject 的JSON 文本。
  • 看起来 3 年后登陆这里的人发现有用的东西与所询问的内容完全无关。而且看起来这个问题早已不再有助于澄清。我相信最初的问题是@JayZhang 想要展平对象,这样数据就是其内部 json 值的字符串表示。似乎没有人回答如何做到这一点。多年后这样做不太可能对其他人有任何价值。人们正在从搜索将 json 转换为字符串并陷入最好删除的混乱问答会话中。

标签: java string


【解决方案1】:

有一个内置的方法可以将 JSONObject 转换为 String。你为什么不使用它:

JSONObject json = new JSONObject();

json.toString();

【讨论】:

  • { "data": "{ "map": { "allowNestedValues": true, "pdId": 168543, "source": "" } }", "msg": "success", “代码”:“0”}
  • 我在响应字符串中得到 \ \ \ 斜杠。如何在不获取\ \ \斜杠的情况下转换json对象
  • @Onkar 与代码 sn-p 一起分享您的字符串示例。
  • 类似于这个线程。但无法找到答案。 stackoverflow.com/q/16563579/8098322
  • {"日期":"2013/5/15"}。你在使用 import org.json.JSONObject 吗?它对我来说很好。分享您的确切样本。 JSONObject json = new JSONObject();试试 { json.put("日期", "2013/5/15"); } catch (JSONException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } System.out.println(json.toString());
【解决方案2】:

你可以使用:

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

如果你想得到一个特定的值,你可以使用:

jsonObject.getString("msg");

或整数值

jsonObject.getInt("codeNum");

【讨论】:

  • 最好使用 jsonObject.optString("msg") 和 jsonObject.optInt("codeNum") 因为如果你使用 getString() 或 getInt() 并且 msg 或 codeNum 值为 null 它'将抛出错误并停止程序。与我提到的方法的唯一区别是,如果值为 null,它们不会抛出错误。
【解决方案3】:

你可以使用

JsonObject.getString("msg"); 

【讨论】:

    【解决方案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)
    

    【讨论】:

      【解决方案5】:

      JsonObject 似乎是 JSON-P API。如果这是真的,我会使用 JsonWritter 将 JsonValue 写入 StringWriter:

          JsonObjectBuilder pokemonBuilder = Json.createObjectBuilder();
          pokemonBuilder.add("name", "Pikachu");
          pokemonBuilder.add("type", "electric");
          pokemonBuilder.add("cp", 827);
          pokemonBuilder.add("evolve", true);
          JsonObject pokemon = pokemonBuilder.build();
          StringWriter sw = new StringWriter(128);
          try (JsonWriter jw = Json.createWriter(sw)) {
              jw.write(pokemon);
          }
          String pokemonStr = sw.toString();
      

      【讨论】:

        【解决方案6】:

        在括号外添加双引号,并将{}内的双引号替换为\"

        所以:"{\"data\":{..... }"

        【讨论】:

          【解决方案7】:
          JSONObject metadata = (JSONObject) data.get("map"); //for example
          String jsonString = metadata.**toJSONString()**;
          

          【讨论】:

          • JSONObject json= (JSONObject) JSONValue.parse(jsonData); JSONObject 数据 = (JSONObject) json.get("data");解析完 json 数据后,需要访问数据对象,获取“map”数据到 json 字符串。
          【解决方案8】:

          只使用 ObjectMapper

          ObjectMapper objectMapper = new ObjectMapper();
          objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
          //here more config opts...
          Car car = new Car("yellow", "renault");
          objectMapper.writeValue(new File("target/car.json"), car);
          String carAsString = objectMapper.writeValueAsString(car);
          

          【讨论】:

            【解决方案9】:

            使用这个:

            JSONObject json = new JSONObject();
            JSONObject.valueToString(json.toString());
            

            【讨论】:

            • JsonObject =/= JSONObject
            【解决方案10】:
                 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"));
            

            【讨论】:

            • 这没有回答问题。
            【解决方案11】:

            您可以使用可靠的库 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());
            

            【讨论】:

              【解决方案12】:
               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"}
              

              【讨论】:

                【解决方案13】:

                我认为你需要这个:

                假设您有这样的示例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\"}} ;
                

                只需将“替换为\”

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2017-04-14
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-05-23
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-11-15
                  相关资源
                  最近更新 更多