- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试集成 Spring Cloud 流并使用 RabbitMQ 作为代理跨服务发布自定义 Java 对象。我要发布的对象如下所示:
public class AppMessageEnvelope implements Serializable {
...
private Object messageBody;
private Date sentAt = new Date();
...
// setters and getters
}
这只是一个包装对象,原始对象放在messageBody
中。我放入 messageBody
中的对象如下所示:
public class Job {
...
private String message;
private Map<MyEnum, String> myMap;
...
}
请注意,AppMessageEnvelope
和 Job
都位于不同的 model 项目中,该项目在发布者和订阅者 Spring Boot 项目中作为 Maven 依赖项导入,因此模型完全相同。
在生产者中,我将对象发布为:
@EnableBinding(Source.class)
public class JobDistributor {
private final Source jobQueue;
@Autowired
public JobDistributor(Source jobQueue) {
this.jobQueue = jobQueue;
}
public AppMessageEnvelope publishJob(AppMessageEnvelope message) {
LOG.info("Sending message: {}.", message);
jobQueue.output().send(MessageBuilder.withPayload(message).build());
return message;
}
}
在消费者中,我收到的消息为:
@Component
@EnableBinding(Sink.class)
public class JobConsumer {
private final JobManager jobManager;
private final ObjectMapper objectMapper;
@Autowired
public JobConsumer(
JobManager jobManager, ObjectMapper objectMapper) {
this.jobManager = jobManager;
this.objectMapper = objectMapper;
}
@StreamListener(target = Sink.INPUT)
public void processData(AppMessageEnvelope messageEnvelope) {
LOG.info("Envelope received: {}.", messageEnvelope);
try {
TypeReference<Job> mapType = new TypeReference<Job>() {};
Job job = objectMapper.readValue(messageEnvelope.getMessageBody().toString(), mapType);
jobManager.processRequest(job);
} catch (Exception ex) {
LOG.error("Couldn't convert to correct object for processing: {}.", ex);
}
}
}
我尝试使用 TypeReference
将内部对象转换为正确的对象,但出现错误:
JobConsumer - Couldn't convert to correct object for processing: {}.
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('i' (code 105)): was expecting double-quote to start field name
at [Source: (StringReader); line: 1, column: 3]
在消息转换之前,我将其记录下来:
JobConsumer - Envelope received: AppMessageEnvelope{..., messageBody={id=5bf3a7302dbe9c7cf9927c60, jobId=8c0bfcb0b21248e694b5cd52337a1f9e, submittedAt=2018-11-20T06:18:24+0000, lastUpdatedOn=null, message=null, ..., fileContentMap={FILE_BYTES=JVBERi0xLjUKJb/3ov}}, sentAt=Tue Nov 20 11:48:24 IST 2018}
我尝试将ObjectMapper
配置为:
@Autowired
private ObjectMapper objectMapper() {
JsonFactory factory = new JsonFactory();
factory.enable(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES);
return new ObjectMapper(factory);
}
我也尝试使用此启用取消引用字段:
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
我尝试了 this blog 提供的解决方案和一些类似的问题但没有解决。我错过了什么?
最佳答案
使用下面的 json 转换将 JSON 转换为模型/实体
ObjectMapper objectMapper = new ObjectMapper();
Job job = objectMapper.convertValue(messageEnvelope.getMessageBody().toString(), Job.class);
关于java - JsonParseException : Unexpected character ('i' (code 105)): was expecting double-quote,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53387516/
我正在尝试使用XMLMapper和ReadTree()来解析一个名为“Message”的字符串变量中的XML文档。我的代码基本上执行以下操作:。有一段时间(真的很长时间),当我运行应用程序时,它没有输
我想做的就是解析非常简单的 json 行,即使它有效我也不知道为什么它会抛出错误 该行是 com.mongodb.util.JSONParseException: {publish_status:'a
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
该消息是在queueChannel尝试发送到特定IP时发出的。 适配器是... @Bean public AbstractConnectionFactory plainClientFactory()
我正在尝试用 Java 处理以下格式的 JSON。 String flowJSON = "{\"FlowDTO\":[{\"policyName\":\"Firewall\",\"action
使用PHP curl方法为大容量数据建立索引时,出现了"error":"JsonParseException[Unexpected character (':' (code 58)): expecte
我正在尝试将 Json 映射到 POJO,但出现此异常: 这是我的代码: ObjectMapper mapper = new ObjectMapper(); try {
尝试反序列化此 JSON 字符串时出现以下异常: { "studentName": "John", "studentAge": "20" } 异常(exception): com.google.gso
我有一个这样的端点: @POST public Response update(MyDocument myDocument){} 如果请求无效,我的服务器会得到一些很长的日志,如下所示: javax.
我正在开发一个连接到我开发的 REST API 的 android 应用程序。我使用 Jersey 和 Hibernate 开发了 REST API。在此 API 中,我有一个名为 findPatie
我正在尝试使用 Java 驱动程序将 json 文件导入 Mongodb,但出现此异常 Exception in thread "main" com.mongodb.util.JSONParseExc
我正在尝试执行以下使用正则表达式的查询 BasicQuery b = new BasicQuery("{ description: /\bmanager\b/}"); 但它抛出 com.mongodb
我正在使用 retrofit(1.9 版)和 jackson(jackson-converter 1.9)。我们的 API 经常以原始字符串的形式发送响应。 我们的 api 客户端如下: RestAd
我正在使用android studio 3.0,无论我做什么,我都无法生成或构建APK,令人惊讶的是它在模拟器上运行,但是在真实的 Android 设备上构建失败。 这就是我尝试构建 APK 时出现错
我正在研究为什么简单的 Jackson JSON 反序列化设置在我明显损坏的 Json 上没有失败。在我的应用程序中,在映射到 Java 类型之前,我必须确认输入是有效的 json。 final St
我已经完成了这样的映射对象到字符串对象的转换 public String getJsonString(Map>> countMap) { Gson gson = new Gson();
我在Android Studio中遇到错误。 我尝试了这些东西,但对我没有用。 删除.gradle文件夹,然后重新同步项目 手动下载了gradle发行版,并且在设置中更改了gradle以从指定位置使用
我的项目在前端使用 Spring MVC,在后端使用 EJB。当我使用 jackson 在 Controller 级别波纹管代码中序列化和反序列化 json 字符串时,代码工作正常但服务层它给出错误“
我的项目在前端使用 Spring MVC,在后端使用 EJB。当我使用 jackson 在 Controller 级别波纹管代码中序列化和反序列化 json 字符串时,代码工作正常但服务层它给出错误“
我有一个 JSON 字符串,我从中创建一个 InputStream 对象,如下所示,然后在尝试序列化我的 JSON 对象时创建一个 GenericRecord 对象Avro 架构。 InputStre
我是一名优秀的程序员,十分优秀!