【问题标题】:How to convert any String into valid JSON format in JAVA如何在 JAVA 中将任何字符串转换为有效的 JSON 格式
【发布时间】:2017-11-10 15:07:36
【问题描述】:

我得到以下格式的字符串,这在使用 Jackson ObjectMapper readTree api 进行解析时会导致问题。用于解析给定字符串的代码是

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
objectMapper.configure(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true);
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
JsonNode rootNode = objectMapper.readTree(inputString);

在下面的字符串中遇到“7”时抛出异常

{
OBJECT_CONVERSION_ERROR:"Failed..."
Portal:{
   7061:"User is....."}
}

如何使用 JAVA 将这样的字符串转换为有效的 JSON 格式? 我正在使用 jackson-all-1.9.11.jar

下面是我的异常信息

org.codehaus.jackson.JsonParseException: Unexpected character ('7' (code 55)): 期待有效的名称字符(对于未引用的名称)或双引号(对于引用的名称)来开始字段名称 在 [来源:java.io.StringReader@3fb1549b;行:1,列:1433]

在将输入字符串传递给对象映射器进行解析之前,有什么方法可以将输入字符串转换为有效的 json 格式?

【问题讨论】:

  • 你能上传引发错误的代码摘录吗?如果不看一些代码,就不可能知道发生了什么。
  • 这看起来像一个 javascript 对象,不是有效的 JSON...
  • 如果显示的值是您的输入字符串,那么这不是有效的 JSON,因为名称 - 值对中的名称应该是字符串,而不是像 7061 这样的数字。
  • @RobObdeijn 是的,它不是有效的 JSON 格式,是否可以将其转换为有效的 JSON 格式,这就是我的问题。

标签: java json jackson


【解决方案1】:

Jackson ObjectMapper 需要在其默认配置中使用双引号字段名称。

要更改此行为,您可以执行以下操作:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);

【讨论】:

    【解决方案2】:
    JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) 
    parser.parse(stringToParse);
    

    阅读更多:http://www.java67.com/2016/10/3-ways-to-convert-string-to-json-object-in-java.html#ixzz4y2fACQlg

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 1970-01-01
      • 2013-09-22
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2022-08-04
      相关资源
      最近更新 更多