首页 > 解决方案 > 如果在使用 JOLT 转换时值具有特殊字符,则 JSON 解析会出错(无效的 UTF-8 起始字节 0xb7)

问题描述

目前我正在使用 Json 和 Jolt 使用 Jolt 规范将输入 Json 转换为所需的 Json。

下面是我的输入 { "payload": { "id": "670868", "another_id": "ARUNS·SUB·SHOP·", "category": "AAS.0100·······", "type ": "ABC" } }

以下是 Jolt Spec

[ {“操作”:“班次”,“规格”:{“*”:{“有效载荷”:{“@type”:“[#3].TYPE”,“@category”:“[#3]。类别”,“@another_id”:“[#3].Rajesh”} } } }]

我正在使用下面的代码库和 maven 依赖项来转换 Json

导入 java.util.List;进口com.bazaarvoice.jolt.Chainr;导入 com.bazaarvoice.jolt.JsonUtils;公共类 TransformeJoltFromJson { public static void main(String[] args) 抛出异常 { List specs = JsonUtils.classpathToList("/spec.json"); Chainr chainr = Chainr.fromSpec(specs); 对象 inputJSON = JsonUtils.classpathToObject("/input.json"); 对象转换输出 = chainr.transform(inputJSON); System.out.println(JsonUtils.toPrettyJsonString(transformedOutput)); } } com.bazaarvoice.jolt 颠簸核心 0.1.1 com.bazaarvoice.jolt json-utils 0.1.1 .................... ......................................下面的错误信息来了

Exception in thread "main" java.lang.RuntimeException: Unable to load JSON object from classPath : /input.json    at

com.bazaarvoice.jolt.JsonUtilImpl.classpathToObject(JsonUtilImpl.java:203) 在 com.bazaarvoice.jolt.JsonUtils.classpathToObject(JsonUtils.java:157) 在 TransformeJoltFromJson.main(TransformeJoltFromJson.java:11) 引起:com.bazaarvoice .jolt.exception.JsonUnmarshalException:无法将 JSON 解组为对象。在 com.bazaarvoice.jolt.JsonUtilImpl.jsonToObject(JsonUtilImpl.java:107) 在 com.bazaarvoice.jolt.JsonUtilImpl.classpathToObject(JsonUtilImpl.java:200) ... 2 更多原因:com.fasterxml.jackson.core。 JsonParseException:无效的 UTF-8 起始字节 0xb7 在 [Source: (BufferedInputStream); line: 100, column: 23] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:663) at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1804) at com .fasterxml.jackson.core.json.UTF8StreamJsonParser。

需要帮助,如何解析上面的json。我们可以有一些可以处理特殊章程的解析器吗

标签: jsonjolt

解决方案


推荐阅读