首页 > 解决方案 > 如何使无法识别的字符转义“。” (代码 46)被识别 - com.fasterxml.jackson.core.JsonParseException

问题描述

我在 magento2 容器的 docker-compose 日志中看到了这个问题。是的,在一些 Magento2 插件中寻找问题是个好主意和方法,但目前尚不清楚问题的原因是什么。假设问题来自这个字符串“ Pris per fp.. ”以及产品描述中的几个类似字符串。

如果一些 ElasticSearch 设置甚至一些补丁可以教会 Jackson 忽略“.”,那就太好了。目前尚不清楚如何强制 Magento2 重现该问题。

目前我可以在没有安装 Magento2 的情况下重现该问题,并希望找到一个有人描述解决方法的地方。

# Start an elasticsearch instance
docker run \
    --env 'node.name=mage-single-node' \
    --env 'cluster.name=mage-single-node' \
    --env 'discovery.type=single-node' \
-d --name=demo-es -p9200:9200 -it docker.elastic.co/elasticsearch/elasticsearch:6.8.17;

curl -XGET "http://localhost:9200/_search?" \
-H"Content-Type: application/json" -d'
{
  "query": {
    "query_string": {
      "query": "\."
    }
  }
}'

标签: javajsonxmlelasticsearchjackson

解决方案


JSON 只允许某些字符以 a 开头\,而.不是其中之一。您无法更改JSON 规范,也无法说服 JSON 解析器的作者接受无效输入,因此您必须更改数据以符合规范。这就是标准的用途。


推荐阅读