gpt4 book ai didi

java - GSON 无法使用字符串空间解析 JSON

转载 作者:行者123 更新时间:2023-11-30 07:01:56 26 4
gpt4 key购买 nike

我有以下对象:

public class ParameterWrapper<T> {

private String type;

private T value;

public ParameterWrapper(String type, T value) {
this.type = type;
this.value = value;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public T getValue() {
return value;
}

public void setValue(T value) {
this.value = value;
}
}

我正在使用 Gson 库将其序列化为 JSON。当 value 包含一个没有空格的字符串时,它可以完美地工作。当 value 包含带空格的字符串时,我看到以下异常:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 28

对于以下 JSON:

{"Plaintext":{"type":"String","value":"hello there"},"Key":{"type":"Number","value":"1"},"SINGLE_FUNCTION":{"value":"1-0"}}

但是对于以下内容:

{"Plaintext":{"type":"String","value":"hellothere"},"Key":{"type":"Number","value":"1"},"SINGLE_FUNCTION":{"value":"1-0"}}

JSON 解析成功。这是一个已知的问题?我已经通过 validator 运行 JSON,它非常好。

编辑:

问题的含糊之处并没有被忽视。我希望这是一个存在的问题。该应用程序非常庞大,这就是为什么要 pry 出一个小的、可编译的示例很困难的原因,但我会尽我所能!

好的。所以首先,下面的 JSON 被发送到我的 Controller :

@RequestMapping("/update-state")
public
@ResponseBody
String updateState(@RequestParam(value = "algorithmId") String algorithmId,
@RequestParam(value = "state") String state) throws InvalidParameterException {

Algorithm algorithm = algorithmService.getAlgorithmById(Integer.parseInt(algorithmId));
algorithm.execute(executorService.parseAlgorithmState(state));

return gsonBuilder.toJson(algorithm.getState().getParameterMap());
}

在调用 parseAlgorithmState(state) 时,它向下移动到此方法:

@Override
public AlgorithmState parseAlgorithmState(String json) throws InvalidParameterException {
Gson gson = new Gson();
Map keyValueMap = (Map) gson.fromJson(json.trim(), Object.class);
...

Map keyValueMap = (Map) gson.fromJson(json.trim(), Object.class); 是异常最初发生的地方。

最佳答案

我刚刚遇到了同样的问题。问题是字符是一个不间断的空格,char(160)。如果您使用 POSTMAN 将其粘贴到请求正文中,您将能够直观地看到这些字符(它们看起来像灰点)。 Gson 不喜欢它们。

关于java - GSON 无法使用字符串空间解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com