簡體   English   中英

在 Java 中將字符串解析為 JsonObject

[英]Parsing string to JsonObject in Java

在我的 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 object。

假設它是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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM