将字符串解析为 Java 中的 JsonObject
Parsing string to JsonObject in Java
在我的 Java 项目中,我不断收到字符串输入,例如“{type=01010201, capacity=700, auth_method=01, auth_no=090713}”。 =12=]
当我尝试像下面这样解析这个字符串时,它似乎失败了
JsonObject tot_payload = null;
try {
tot_payload = new JsonObject(obj.getString("data"));
} catch (Exception e) {
log.error("record in json parsing error");
}
我知道这是因为我缺少字符串的空格。
我的应用程序接收到各种不同的字符串,就像这样,我想知道是否有任何有效的方法可以将此类字符串转换为 json 对象。
假设它是 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>
在我的 Java 项目中,我不断收到字符串输入,例如“{type=01010201, capacity=700, auth_method=01, auth_no=090713}”。 =12=]
当我尝试像下面这样解析这个字符串时,它似乎失败了
JsonObject tot_payload = null;
try {
tot_payload = new JsonObject(obj.getString("data"));
} catch (Exception e) {
log.error("record in json parsing error");
}
我知道这是因为我缺少字符串的空格。 我的应用程序接收到各种不同的字符串,就像这样,我想知道是否有任何有效的方法可以将此类字符串转换为 json 对象。
假设它是 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>