【问题标题】:JSONObject shows escape charactersJSONObject 显示转义字符
【发布时间】:2020-11-24 03:24:39
【问题描述】:

我有一个手动创建的 json 对象,我在其中一个字段中使用了转义字符。每当我打印我的 jsonobject 时,我都会看到转义字符串,有没有办法删除它们?我只是担心当我通过服务器发送它时,客户端会得到带有转义字符串的 json 对象。

        String car_parameters = "{\"property_name\":\"car_id\",\"traceKey\":\"account_id,accountName,car_id\"}";
        System.out.println("car params"+car_parameters);

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("message", car_parameters);
        System.out.println("one"+jsonObject);
        System.out.println("two"+payload);

这些分别是输出,我尝试将 json 对象转换为字符串,但这并没有什么不同。我希望看到 json 对象的字段没有转义字符,就像我只打印字符串时一样。

car params{"property_name":"car_id","traceKey":"account_id,accountName,car_id"}
one{"message":"{\"property_name\":\"car_id\",\"traceKey\":\"account_id,accountName,car_id\"}"}
two{"message":"{\"property_name\":\"car_id\",\"traceKey\":\"account_id,accountName,car_id\"}"}

【问题讨论】:

  • 这是正确的输出。您将一个字符串放入 JSONObject 中。如果要在 JSON 对象中存储 JSON 对象,请将字符串解析为 JSON 对象,然后 put 即可。

标签: java json string escaping


【解决方案1】:

转义字符是由 Java 语法引起的。 Java 不允许

String car_parameters = "{"property_name":"car_id","traceKey":"account_id,accountName,car_id"}"

自动转换。

你可以把它变成一个对象,如下图

System.out.println("toString"+JSONObject.parse(car_parameters));

输出:

Object:{"traceKey":"account_id,accountName,car_id","property_name":"car_id"}

另外: 如果发送给客户端,也会是 {"message":"{property_name":"car_id","traceKey":"account_id,accountName,car_id"}"}

\它会成为字符串的一部分,所以前端需要处理,但是在Java中传递不影响使用。

【讨论】:

    【解决方案2】:

    你可以这样做。请考虑您需要什么工件。(我最喜欢的是 ObjectMapper。)
    如果您需要从字符串生成,这很简单。
    也许有很多苛刻的方法,但我认为现在没有必要。
    请记住,第一个示例需要新的工件,如下所示在您的 pom.xml

    <!-- for the JSONParser -->
    <dependency>
       <groupId>com.googlecode.json-simple</groupId>
       <artifactId>json-simple</artifactId>
       <version>1.1</version>
    </dependency>
    
      public void JSonTest() throws JSONException, ParseException {
        String car_parameters = "{\"property_name\":\"car_id\",\"traceKey\":\"account_id,accountName,car_id\"}";
        System.out.println("car params"+car_parameters);
    
        JSONParser jsonParser = new JSONParser();
        Object myObject = jsonParser.parse(car_parameters);
        System.out.println("One" + myObject);
    
        // Put it separate.
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("property_name", "car_id");
        jsonObject.put("traceKey", "account_id,accountName,car_id");
        System.out.println("Two"+jsonObject);
    
        jsonObject.remove("property_name");
        jsonObject.remove("traceKey");
    
        // Put it a map first.
        HashMap<String, String> myMap = new HashMap<>();
        myMap.put("property_name", "car_id");
        myMap.put("traceKey", "account_id,accountName,car_id");
        jsonObject.put("message", myMap);
        System.out.println("Three"+jsonObject);
      }
    

    这是输出,

    car params{"property_name":"car_id","traceKey":"account_id,accountName,car_id"}
    One{"traceKey":"account_id,accountName,car_id","property_name":"car_id"}
    Two{"traceKey":"account_id,accountName,car_id","property_name":"car_id"}
    Three{"message":"{traceKey=account_id,accountName,car_id, property_name=car_id}"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 2017-04-14
      • 1970-01-01
      相关资源
      最近更新 更多