unmarshalling 相关问题

解组是将对象的存储或传输表示转换回其原始存储器表示的过程。这是编组的反面。

如果在json的结构体中指定为接口,数字会转换成什么类型

我有一个 json,其中字段可以作为字符串和数字。 {“ID”:123456} {“ID”:“12345678”} 我需要处理这两个选项。我是通过界面写的...

回答 1 投票 0

解组时出现ClassNotFoundException,真的不知道为什么

已修复:答案在底部 我正在为一个项目编写一个android应用程序,我正在尝试使用parcelable对象。 我有 2 个可分享的课程。第一个是只有 2 个参数的普通类。 第二个...

回答 3 投票 0

json.Unmarshal 将地图转换为切片

给定以下 JSON 字符串: { “用户名”:“鲍勃”, “名字”:“罗伯特”, “位置”:[ { “城市”:“巴黎”, “…………

回答 1 投票 0

如果没有@Target({ElementType.ANNOTATION_TYPE})如何组合多个注释以供重用

我想多次重复使用一堆相同的注释。但问题是我不能通过应用它们来创建另一个注释(因为它们缺少 @Target({ElementType.ANNOTATION_T...

回答 1 投票 0

使用动态 XmlElements 解组 xml 响应

我有如下的 xml 响应 56142587 56265082 5626509...

回答 0 投票 0

验证未编组对象的数字签名失败

我按照本指南签署和验证 XML 消息 https://www.oracle.com/technical-resources/articles/java/dig-signature-api.html。验证使用生成的文档。这个应用程序...

回答 0 投票 0

JAXB Unmarshall 正在删除数字签名中的回车

我正在使用以下依赖项进行 XML 签名: jakarta.activation jakarta.activation-api 我正在使用以下依赖项进行 XML 签名: <dependency> <groupId>jakarta.activation</groupId> <artifactId>jakarta.activation-api</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>4.0.0</version> <scope>runtime</scope> </dependency> 我能够使用信封成功生成签名: <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><DigestValue>xndyhbkzbLreG3cxXqa5Q5RdKEavhrc2Fvd0Wsc+Oug=</DigestValue></Reference></SignedInfo><SignatureValue>No+gNx3Hwd3WfH0v6OZ8uptWVyneZT55CfUrxMnW33a87egeiImwsyepZZXTbya0ifzX1iOtyyaf&#13; OwEDxTFhf/FCPH6Nj9KCFNabZddwN38tCOkkAkYdkKdW14AM80HU/9yPIAMWytibbyd3AKVuRQgd&#13; +qkf1/V8J1Ki1LNO4tbPzxqpNMpRmpH/469lgMHEz9Xy1DnJ154E+H2OWNufooGwwpV/pMbM8RzY&#13; 当我尝试这样验证时,它起作用了: signature.sign(dsc); System.out.println("doc: " + getStringFromDocument(doc) + " validate: " + validate(doc)); 但是,当我尝试解组签名以便将其分配给 DTO 时,它失败了: JAXBElement<?> root = XmlUtils.getUnMarshaller(xml.getClass().getName()).unmarshal(getStreamSource(doc), xml.getClass()); xml.setSignature(((SignXml<?>) root.getValue()).getSignature()); 在比较文档中生成的签名和解组的签名时,我发现字符 被删除: 医生 <SignatureValue>No+gNx3Hwd3WfH0v6OZ8uptWVyneZT55CfUrxMnW33a87egeiImwsyepZZXTbya0ifzX1iOtyyaf&#13; OwEDxTFhf/FCPH6Nj9KCFNabZddwN38tCOkkAkYdkKdW14AM80HU/9yPIAMWytibbyd3AKVuRQgd&#13; +qkf1/V8J1Ki1LNO4tbPzxqpNMpRmpH/469lgMHEz9Xy1DnJ154E+H2OWNufooGwwpV/pMbM8RzY&#13; +yVSjKguJr9UWKWswQkD0XUasVXBZckjlYxZL24ZwD1rwU7wP2itOli3VH9ReC3CA33YOUMT0ktP&#13; 解组 <ns2:SignatureValue>No+gNx3Hwd3WfH0v6OZ8uptWVyneZT55CfUrxMnW33a87egeiImwsyepZZXTbya0ifzX1iOtyyafOwEDxTFhf/FCPH6Nj9KCFNabZddwN38tCOkkAkYdkKdW14AM80HU/9yPIAMWyt 正如我们所看到的,签名是相同的,唯一的区别是字符 被删除了。 我试着查看 EscapeCharacter 解决方案,但它似乎只在旧的 JAXB 实现中可用。有什么想法吗? 性格 是回车 (CR) 字符的转义序列。似乎这个字符在解组过程中被删除,这导致签名不同。 一个解决方案可能是显式添加 字符返回到未编组的签名值。一种方法是创建一个自定义 XMLAdapter,它将添加 解组期间将字符添加到签名值。 这是一个如何创建自定义 XMLAdapter 的示例: public class SignatureValueAdapter extends XmlAdapter<String, String> { @Override public String unmarshal(String value) throws Exception { return value + "&#13;"; } @Override public String marshal(String value) throws Exception { return value; } } 这个适配器只是添加了 解组期间签名值末尾的字符。要使用此适配器,您需要使用 @XmlJavaTypeAdapter(SignatureValueAdapter.class) 注释 DTO 中的 SignatureValue 字段。 举个例子: @XmlRootElement(name = "SignXml") @XmlAccessorType(XmlAccessType.FIELD) public class SignXml<T> { @XmlElement(name = "Signature") @XmlJavaTypeAdapter(SignatureValueAdapter.class) private String signature; // getters and setters } 通过将 @XmlJavaTypeAdapter(SignatureValueAdapter.class) 注释添加到签名字段,自定义 XMLAdapter 将在解组期间使用以添加 字符返回签名值。 一个可能的解决方案是将 CR 字符的所有实例替换为数据中不存在的不同字符或字符串。例如,您可以替换“的所有实例 “ 和 ” " 在编组之前,然后替换 " 的所有实例 “ 和 ” " 解组后。这将确保作为数据一部分的 CR 字符被正确保留。 或者,您可以使用不依赖换行符的不同编码格式,例如二进制编码或 JSON。这些格式旨在处理复杂的数据结构,并且不太可能受到换行问题的影响。

回答 2 投票 0

为什么在 golang 中解组后连接的结构会丢失? [重复]

我是golang的新手,开始玩了一点。那是我遇到这个东西的时候。我运行以下代码 包主 进口 ( “编码/json” “调频” ) ...

回答 0 投票 0

自定义解组 golang - 对象或 int

我正在尝试解组 API 的响应,其中状态可以是对象或整数: “地位”: { "title": "错误请求", “状态代码”:...

回答 1 投票 0

Golang Unmarshal Json 没有解析所有子结构

我有一个父结构和两个子结构 ResponseA 和 ResponseB。我为 ParentA 结构编写了“UnmarshalJson”函数。 parentB 结构和字符串字段不解析...

回答 0 投票 0

Golang JSON 解组具有通用类型的结构

我是 Go 的新手,正在为 JSON 封送处理实现数据结构。我想总结一些类型,因为它们具有相同的字段但可能的枚举值不同。因此我创造...

回答 0 投票 0

在 Golang 代码中无法访问 JSON 元素

我有以下 Golang 代码: 包主 进口 ( “字节” “编码/json” “调频” “字符串” ) 函数 someFunc() { 输出:=` ...

回答 1 投票 0

Apache Camel 3.17 Adoptium JDK 17 错误 IllegalAccessError:无法从类 javax.activation.MailcapCommandMap 访问类 registries.LogSupport

`我已经将 Camel 3.20 迁移到 JDK 17 Adoptium。 在路由开头调用“.unmarshal().mimeMultipart()”时,出现如下错误。我慢慢地没有想法了。

回答 0 投票 0

Java XML 解组在使用 JAXB 的符号 (&) 上失败

我有以下 XML: ... 测试&地址 ... 当我尝试解组时...

回答 4 投票 0

JAXB XML 到 Pojo 使用继承如何

我从某些端点收到一些 XML。每个响应的基本结构都是相似的(我得到的是 XML,没有 xsd): 端点名称-地址 0 我从某些端点收到一些 XML。每个响应的基本结构都是相似的(我得到的是 XML,没有 xsd): 端点名称-地址 <RESPONSE> <INFO> <ret_code>0</ret_code> </details> </INFO> <CONTENT> <name>John</name> <addresses> <address> <city>NewYork</city> <street>5th</street> </address> <address> <city>Paris</city> <street>Colombe</street> </address> </addresses> </CONTENT> </RESPONSE> 薪资终点 <RESPONSE> <INFO> <ret_code>1</ret_code> <details>no salary data</details> </INFO> </RESPONSE> 或有效的数据回复 <RESPONSE> <INFO> <ret_code>0</ret_code> </details> </INFO> <CONTENT> <name>John</name> <salary>1000</salary> </CONTENT> </RESPONSE> 常用零件 如您所见, 标签始终存在, 标签始终存在。 并不总是存在,有时内容会根据调用的端点而有所不同。 所以我想(使用 JaxB)将这些映射到一些 POJO,如下所示: 信息类 @XmlRootElement(name="INFO") public class INFO { @XmlElement public String ret_code; @XmlElement public String details; } 也是地址类 @XmlRootElement(name = "address") public class ADDRESS{ @XmlElement public String city; @XmlElement public String street; } 端点地址 @XmlRootElement(name="RESPONSE") public class Response extends INFO{ @XmlElement(name="name") public String name; @XmlWrapperElement(name="addresses") @XmlElement(name="address") public List<Address> addresses; } 2.1.) 没有继承的 EndpointAddress 变化 @XmlRootElement(name="RESPONSE") public class Response { @XmlElement(name="INFO") public INFO info; @XmlElement(name="name") public String name; @XmlWrapperElement(name="addresses") @XmlElement(name="address") public List<Address> addresses; } 端点薪水 - 此处有 2 个案例(继承与否)如上所述..不会发布两者以保持简短 @XmlRootElement(name="RESPONSE") public class Response extends INFO{ @XmlElement(name="salary") public String salary; } 此时映射返回: ClassCastException 在使用继承时尝试将 INFO 映射到 Response Info信息的空值,没有继承时的地址。 任何关于如何实现某些可重用性的帮助都将非常受欢迎。 谢谢!

回答 0 投票 0

将缺失的字段解组为空映射

类型字段定义结构{ 名称字符串 `json:"name"` 描述字符串 `json:"description"` 方面 map[string]string `json:"aspects"` } f...

回答 1 投票 0

Trying to demarshal JSON response using Java Classes

我正在尝试使用 Java 类对 JSON 响应进行解组,我是 Java 的新手,所以这可能是我犯的一个小学生错误。 JSON 响应是: [{ “指数”:514042, “source_lis ...

回答 0 投票 0

为什么在 golang 中解组转义的 JSON 字符串需要四个 '\'?

我的代码: 我想解组一个包含正则表达式语法的字符串,所以有 \d \w \( .... . Json unmarshal failed !事实上,我发现需要四个 \ befor escapse 字符,我不想使用字符串。

回答 0 投票 0

JSONObject 子项上的 TJSONUnMarshal 回复器

我正在尝试弄清楚 Reverter 是如何为 TJSONUnMarshal 对象工作的。我有一个基于某些 JSON 的 TJSONObject,它包含以下属性: { “标题”:{ “我……

回答 0 投票 0

JAXB接受重复标签

在我们的应用程序中,用户发送的XML如下。 信息 信息2 ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.