标签: objectmapper

Alamofire、Objectmapper、Realm:嵌套对象

我正在使用 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)

realm swift alamofire objectmapper

5
推荐指数
1
解决办法
7028
查看次数

如何使用 Jackson 的 ObjectMapper.readerForUpdating 忽略某些字段

我正在使用杰克逊 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 和/或其中之一正在更新这一事实有关。

java serialization json jackson objectmapper

5
推荐指数
1
解决办法
5409
查看次数

将 DateTimeFormatter 与 ObjectMapper 结合使用

在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

java objectmapper

5
推荐指数
1
解决办法
4940
查看次数

由于“直接自引用导致循环”错误,无法将 Protobuf 转换为映射

我正在尝试使用下面提到的代码将 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"])

protocol-buffers self-reference objectmapper

5
推荐指数
0
解决办法
627
查看次数

DynamoDBMapper:如何获取保存的项目?

对于一个简单的 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在客户端生成,但我不想这样做,因为解决潜在的原子性问题需要客户端和服务器端的额外逻辑。

我正在使用 …

java rest amazon-web-services amazon-dynamodb objectmapper

5
推荐指数
1
解决办法
3542
查看次数

忽略单元测试的 Jackon JsonProperty 访问

我在 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)

java json unit-testing jackson objectmapper

5
推荐指数
1
解决办法
2449
查看次数

Alamofire 响应对象映射

我是 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)

我从服务器获取的 …

ios swift alamofire objectmapper swift3

5
推荐指数
1
解决办法
1万
查看次数

导入 com.fasterxml.jackson.databind.ObjectMapper 无法解析

我正在尝试创建一个 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)

java spring maven spring-boot objectmapper

5
推荐指数
1
解决办法
2万
查看次数

无法构造 java.util.LinkedHashMap 的实例:无字符串参数构造函数/工厂

在解析文件并转换为 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 objectmapper

5
推荐指数
1
解决办法
2万
查看次数

Jackson:检查 ArrayNode 是否包含 JsonNode

我在 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)

java jackson objectmapper jsonnode

5
推荐指数
1
解决办法
5349
查看次数