我正在使用 Alamofire、Objectmapper、Realm,除了一件事之外,一切都在工作:我无法映射嵌套对象。
class Voting: Object, Mappable {
dynamic var votingID: String = ""
dynamic var question: String = ""
var votingOptions = List<VotingOption>()
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
votingID <- map["id"]
question <- map["question"]
votingOptions <- map["votingOptions"]
}
override class func primaryKey() -> String {
return "votingID"
}
}
class VotingOption: Object, Mappable{
dynamic var optionID: String = ""
dynamic var text: String = ""
required convenience init?(_ map: Map) {
self.init()
} …Run Code Online (Sandbox Code Playgroud) 我正在使用杰克逊 2.7.0
encodingType当使用一些新值更新现有对象时,我试图忽略:
ObjectMapper om = new ObjectMapper();
om.readerForUpdating(message).readValue(messageSubset);
Run Code Online (Sandbox Code Playgroud)
message包含 的值encodingType。
messageSubset(JSON 字符串)不包含 的条目(无键值)encodingType。
我尝试过的:
om.setSerializationInclusion(Include.NON_EMPTY);@JsonIgnoreProperties(ignoreUnknown = true)@JsonIgnoreProperties(value = { "encodingType" })@JsonInclude(Include.NON_EMPTY)@JsonInclude(Include.NON_NULL)@JsonInclude(Include.NON_EMPTY)@JsonInclude(Include.NON_NULL)@JsonIgnore@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)不是以上工作!有什么帮助吗?
我想这与 readerForUpdating 和/或其中之一正在更新这一事实有关。
在Java8之前,我们使用ObjectMapper来设置DateFormat如下
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
ObjectMapper mapper = <SomeInstantiation>
mapper.setDateFormat(df);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
Run Code Online (Sandbox Code Playgroud)
现在我们有了 java.time.format.DateTimeFormatter,它与 SimpleDateFormat 不同,它是线程安全的并且更健壮。我想替换 ObjectMapper 上的上述设置。
如何使用 ObjectMapper 设置 DateTimeFormatter
我正在尝试使用下面提到的代码将 ProtoBuf 转换为 Map。
Map map = objectMapper.convertValue(obj, Map.class);
导致此问题的示例 PB 数据:id:“1”元数据 { type:“UNIT” isValidated:false status { status:ACTIVE } }
我收到错误 java.lang.IllegalArgumentException:直接自引用导致循环(通过引用链:com.sample.samplePB["unknownFields"]->com.google.protobuf.UnknownFieldSet["defaultInstanceForType"])
对于一个简单的 Java REST-API,我创建了一个保存函数来将我的模型保存到 DynamoDB 表中。
该模型使用自动生成的范围键,如下所示:
@DynamoDBTable(tableName = "Events")
public class EventModel {
private int country;
private String id;
// ...
@DynamoDBHashKey
public int getCountry() {
return country;
}
public void setCountry(int country) {
this.country = country;
}
@DynamoDBRangeKey
@DynamoDBAutoGeneratedKey
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,DynamoDBMappers .save() 方法不返回任何内容。我想返回创建的项目以location在我的 201 HTTP 响应中设置正确的标头。
public EventModel create(EventModel event) {
mapper.save(event);
return null;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?有什么建议?当然,我可以id在客户端生成,但我不想这样做,因为解决潜在的原子性问题需要客户端和服务器端的额外逻辑。
我正在使用 …
我在 Spring Boot 项目中使用 Jackson 进行序列化/反序列化。
我有一个具有以下结构的 DTO 对象,
public class TestDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private UUID certificateId;
@NotNull
private Long orgId;
@NotNull
private CertificateType certificateType;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Valid
@NotNull
private PublicCertificateDTO publicCertificate;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Valid
private PrivateCertificateDTO privateCertificate;
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private ZonedDateTime expiryDate;
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private ZonedDateTime createdDate;
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private ZonedDateTime updatedDate;
}
Run Code Online (Sandbox Code Playgroud)
使用以下方法在我的单元测试中序列化此对象,
public static byte[] convertObjectToJsonBytes(TestDTO object)
throws …Run Code Online (Sandbox Code Playgroud) 我是 swift 3 编程的新手,我正在使用Alamofire进行 api 调用并避免繁琐的 json 配对,我正在使用AlamofireObjectMapper库。我有一个ApiController函数来进行 api 调用,下面是它的代码:
public static func makePostRequest<T: Mappable>(url: String, params: Parameters, networkProtocol: NetworkProtocol, responseClass: T){
let headers = getHeaders()
networkProtocol.showProgress()
Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers)
.validate()
.responseData{ response in
let json = response.result.value
var jsonString = String(data: json!, encoding: String.Encoding.utf8)
let responseObject = responseClass(JSONString: jsonString!)
switch(response.result){
case .success(_):
networkProtocol.hideProgress()
networkProtocol.onResponse(response: response)
break
case .failure(_):
networkProtocol.hideProgress()
networkProtocol.onErrorResponse(response: response)
break
}
}
Run Code Online (Sandbox Code Playgroud)
我从服务器获取的 …
我正在尝试创建一个 JSON 文件,但在尝试使用 ObjectMapper 类时遇到了问题。继承人我的班级代码:
import java.math.BigDecimal;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import desafiodimensiva.entities.Desafio2;
@RestController
public class Desafio2Controller {
@RequestMapping(value = "/teste")
public String index() {
return "Greetings from Spring Boot!";
}
@RequestMapping("/desafio2")
public Desafio2 novoDesafio2() {
ObjectMapper mapper = new ObjectMapper();
Desafio2 pessoa = new Desafio2();
BigDecimal valorFinanceiroPessoa = new BigDecimal("0.00");
pessoa.setNomePessoa("----------- ");
pessoa.setIdPessoa("0000");
pessoa.setValorFinanceiro(valorFinanceiroPessoa);
return pessoa;
}
}
Run Code Online (Sandbox Code Playgroud)
还有我的 pom.xml :
`<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.desafio.dimensiva</groupId>
<artifactId>desafiodimensiva</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Desafio Dimensiva</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.BUILD-SNAPSHOT</version>
</parent>
<properties> …Run Code Online (Sandbox Code Playgroud) 在解析文件并转换为 POJO 时遇到问题。以下异常我得到。
com.fasterxml.jackson.databind.JsonMappingException:无法构造 java.util.LinkedHashMap 的实例:没有从字符串值反序列化的字符串参数构造函数/工厂方法 ('{\"hosturl_path\":\"/images\"} ')
示例 json 文件:
{"test": [{
"a112a": "testhost",
"a112b": "{\"hosturl_path\":\"/images\"}"
}]}
Run Code Online (Sandbox Code Playgroud)
POJO -
import java.io.Serializable;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.ANY,
setterVisibility = JsonAutoDetect.Visibility.ANY)
public class TestPojo implements Serializable
{
private static final long serialVersionUID = 638312139361412L;
@JsonProperty("a112a")
private String host;
@JsonProperty("a112b")
private Map<String,String> parameterMap;
public TestPojo()
{
}
public TestPojo(String host, Map<String, String> parameterMap)
{
this.host = host; …Run Code Online (Sandbox Code Playgroud) 我在 Java 应用程序中使用Jackson JSON 库及其树模型系统 ( JsonNode)。在此,我需要检查一个是否ArrayNode包含给定的JsonNode. 我一直在寻找通过JavaDoc中,我没有看到任何形式的.contains()对方法ArrayNode。我最终自己编写了一个包含方法:
public static boolean arrayNodeContains(ArrayNode arrayNode, JsonNode node) {
Stream<JsonNode> nodeStream = StreamSupport.stream(arrayNode.spliterator(), false);
return nodeStream.anyMatch(j -> j.equals(node));
}
Run Code Online (Sandbox Code Playgroud)
单元测试:
@Test
public void testArrayNodeContains()
throws IOException
{
ObjectMapper mapper = new ObjectMapper;
String arrayJsonString = "[{\"foo\":\"bar\"},{\"foo\":\"baz\"},{\"baz\":\"bar\"}]";
String nodeTrueJsonString = "{\"foo\":\"bar\"}";
String nodeFalseJsonString = "{\"foo\":\"brains\"}";
List<Object> list = mapper.readValue(arrayJsonString, List.class);
ArrayNode arrayNode = mapper.valueToTree(list);
Map<String, Object> nodeTrueMap = mapper.readValue(nodeTrueJsonString, Map.class);
JsonNode nodeTrue …Run Code Online (Sandbox Code Playgroud) objectmapper ×10
java ×7
jackson ×4
alamofire ×2
json ×2
swift ×2
ios ×1
jsonnode ×1
maven ×1
realm ×1
rest ×1
spring ×1
spring-boot ×1
swift3 ×1
unit-testing ×1