GSON 无法解析带有字符串空格的 JSON

2023-12-13

我有以下对象:

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:第1行第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 解析成功。这是一个已知的问题?我已经通过验证器运行了 JSON,效果非常好。

Edit:

这个问题的含糊之处并没有被忽视。我希望这是一个现有的问题。该应用程序非常庞大,这就是为什么很难找出一个小的、可编译的示例,但我会尽力而为!

好的。首先,以下 JSON 发送到我的控制器:

@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不喜欢他们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GSON 无法解析带有字符串空格的 JSON 的相关文章

随机推荐

  • zend 与 select 的关系

    我是 zend 的新手 我被要求重新开发一个曾经用纯 PHP 编写的网站并将其放入 zend 框架中 我在数据库关系方面遇到很多麻烦 我似乎无法专心定义和查询关系 我想找一个类别 从该类别中 我希望能够找到与其关联的所有类别信息 并能够查询
  • 是否可以使用Python的requests库设置代理链?

    标准情况如下 公司的安全策略要求所有员工使用公司的代理服务器 需要授权 来获取任何 https 资源 为了通过 Python 解释器成功使用任何互联网连接 我必须手动 set HTTP PROXY http
  • 价格 woocommerce 中的小数分隔符

    Hi everyone I have this configuration in my woocommerce And in my product I have this 但当我显示价格时 它返回 4 95 而不是 4 95 我用这个来获取
  • 在 Hibernate 中混合 HQL 和 Criteria API

    是否可以混合使用 HQL 和 Criteria API 我有一个String包含 HQL 中的 where 条件和Criteria它已经建成并从其他地方获得 我想知道是否可以添加where条件String to Criteria add w
  • 使用 Spring CloudVault 时应用程序初始化时出现禁止错误

    使用 Spring Cloud HOXTON SR6 和 Spring boot 2 3 2 启动服务时 尝试访问 secret application 和 secret application profile 时出现 403 错误 这些路
  • 按自定义顺序对字符串数组进行排序

    我想按照我提到的顺序对字符串数组中的一组固定字符串进行排序 例如 文本文件 图像文件 音频文件 视频文件 应用程序文件 其他文件 示例1 如果我的字符串数组输入是这样的 inputval 0 Other files inputval 1 I
  • 用于获取 JavaFX WebView 控制台事件的公共 API 是什么?

    我想记录 WebView 控制台事件 他们有时会发现所使用的底层浏览器中的怪癖 并可以帮助排除故障 可以使用 Sun 实现类与 WebView 控制台交互 import WebConsoleListener setDefaultListen
  • 将方法指针从 C# 传递到 Delphi DLL

    我在将字符串作为 PChar 传递到 Delphi 构建的 DLL 时遇到了一些问题 感谢 Jens M hlenhoff 解决了它 现在我有另一个问题 如果 Delphi 声明是常规类型过程 则在传递给 DLL 时我已成功回调 c 方法
  • 将 razor 视图渲染为字符串而不修改 html

    我之前找到过有关如何将 MVC 4 视图渲染为字符串的答案 但是 我开始使用视觉工作室2013而现在的结果并不如预期 见下文 lt A gt lt B gt lt C gt class panel lt D gt gt lt E gt cl
  • MongoDB 和类验证器唯一验证 - NESTJS

    TL DR 我正在尝试在我的验证器中运行猫鼬查询 您好 我正在尝试制作一个自定义装饰器 如果该字段的值已存在 它会抛出错误 我正在尝试在验证路线的类中使用猫鼬模型 与解析器 控制器不同 InjectModel 不适用于验证器类 我的验证器是
  • 使用 jquery ui 模式对话框提交表单

    提交表单时 我在使用 JQuery UI 模态对话框时遇到困难 目的是您点击提交按钮 模式弹出窗口 根据您在模式中的选择 表单要么提交 要么不提交 相反 模式会弹出并自动提交 前端 div title Basic dialog p Plea
  • 如何将 JavaScript 对象编码为 JSON?

    有没有一种将 JavaScript 对象编码为 JSON 的好方法 我有一个键值对列表 其中名称来自复选框 并且值根据该框是否被选中而为 true 或 false var values checks checkbox each functi
  • 在颜色空间中的scale_fill/color中粘贴名称不能循环工作

    使用时缩放填充连续发散 from colorspace里面一个for loop or function不粘贴name图例标题并通过错误 如下例所示 library ggplot2 library colorspace set seed 10
  • 尝试用 JPanel 画线

    我正在尝试使用画线JPanel我已经碰壁了 我可以将两侧朝下 但是一旦涉及到从 x 线中减去 一切都会出错 package GUIstuff import java awt Graphics import javax swing JPane
  • 为什么无符号n位整数的最大值是2ⁿ-1而不是2ⁿ?

    The maximum value of an n bit integer is 2n 1 Why do we have the minus 1 Why isn t the maximum just 2n The 1因为整数是从0开始的 但
  • 如何在 C++ 端获取 QQuickItem 的有效实例

    好吧 我进行了很多搜索 但还没有找到好的解决方案 我是新来的Qt 我有一堂课是QQuickItem像这样 class MyQuickItemClass public QQuickItem Q OBJECT SetInfo SomeCppCl
  • 如何使用 SQL 查找缺失的数据行?

    我的问题 我有一个MySQL数据库 它按时间顺序存储大量气象数据 每10分钟插入一次新数据 不幸的是 已经发生了几次停电 因此某些行丢失了 我最近设法从气象站获取了某些备份文件 现在我想用它们来填充丢失的数据 DB 的结构如下 示例 dat
  • 使用 string.Replace 来匹配整个单词

    我正在使用 NET 2 0 和 WinForms 目前 我需要一段代码来将给定文本中的一个字符串替换为另一个字符串 但在文本中它应该只查找整个单词 我的意思是 string name COUNTER 40 CLOCK COUNTER 60
  • 在 DNN 训练和输入的偏导数结束时返回逆 Hessian 矩阵

    使用 Keras 和 Tensorflow 作为后端 我构建了一个 DNN 它以恒星光谱作为输入 7213 个数据点 并输出三个恒星参数 温度 重力和金属丰度 该网络在我的测试集上训练良好并预测良好 但为了使结果在科学上有用 我需要能够估计
  • GSON 无法解析带有字符串空格的 JSON

    我有以下对象 public class ParameterWrapper