jackson 在Java中将字符串解析为JsonObject

enxuqcxy  于 2022-11-23  发布在  Java
关注(0)|答案(1)|浏览(171)

在我的Java项目中,我经常收到字符串输入,例如“{type=01010201,capacity=700,auth_method=01,auth_no=090713}”
当我尝试解析如下字符串时,似乎失败了

JsonObject tot_payload = null;
try {
    tot_payload = new JsonObject(obj.getString("data"));
} catch (Exception e) {
    log.error("record in json parsing error");
}

我知道这是因为我缺少了字符串的空格。我的应用程序收到了各种不同的字符串,我想知道是否有任何有效的方法将这样的字符串转换为json对象。

46scxncf

46scxncf1#

假设它是org.json.JSONObject,将输入预处理为实际的JSON格式应该可以解决这个问题:

import static org.assertj.core.api.Assertions.assertThat;

import org.json.JSONException;
import org.json.JSONObject;
import org.junit.jupiter.api.Test;

class JSONObjectLT {
    
    @Test
    void parseString() throws JSONException {
        
        final String input = "{type=01010201, capacity=700, auth_method=01, auth_no=090713}";
        
        // only works if keys/values do not contain equal signs
        final String preprocessed = input.replace('=', ':');
        final JSONObject json = new JSONObject(preprocessed);

        assertThat(json.getString("type")).isEqualTo("01010201");
        assertThat(json.getInt("capacity")).isEqualTo(700);
    }
}

Maven依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-json-org</artifactId>
    <version>2.13.2</version>
</dependency>

相关问题