java - 我为每个 json 负载都有 DTO。我通过http post请求获取有效负载。我得到两个有效负载,但如何将它们组合成最终有效负载

标签 java json spring-boot lambda mapping

我有有效负载 1、有效负载 2 和有效负载 3 的 DTO。 如何获取payload3? 使用有效负载 1 和有效负载 2。 如何建立数据模型之间的映射?

DTO 1

public class DataRequestModel {
private DataValue data; //some example
private long  timestamp;
@Data
public static class DataValue {
private Value1 value1;
private Value2 value2;
}
@Data
public static class Value1 {
    private long val;
}
@Data
public static class Value2 {
    private long val;
}
} 

数据模型2

public class Guid{
private string guid; 
} 

数据模型3

 public class payload{
 private String guid;
 private long longvalue;
 private long timestamp;
 }
## Controller
@RestController
@RequestMapping("/users")
public class DataTransferController {
 List<Payload> payload;
 @PostMapping("/list")
 public void data(@RequestBody DataRequestModel dataRequestModel){

不知道从这里该怎么做...

       for(Payload temp: payload){
         temp.getLongValue()=dataRequestModel.getData().
         }
 }
 }  

这些是 JSON 的结构 1.JSON负载1

  {  
  "data":{  
 "value1":{  
    "val":30
 }, "value2":{  
 "val":20
 }
  },
 "timestamp":155501523
}

2.JSON负载2

       {  
       "guid":[  
       "/value1",
       "/value2"
       ]
       }

3.JSON最终负载(待发送)

     [  
     {  
     "guid":"/value1",
     "longvalue":30,
     "timestamp":155501523
     },
     {  
     "guid":"/value2",
     "longvalue":20,
     "timestamp":155501523
     }
     ]

我生成有效负载3的代码是

   @RestController @RequestMapping("/users")
 public class DataTransferController 
    { 
    List<Payload> payload; @PostMapping("/list")

    public void data(@RequestBody DataRequestModel dataRequestModel)
    { 
    Not sure how to do from here... for(TimeseriesPayload temp: timeseriesPayload)
{ 
temp.getLongValue()=dataRequestModel.getData().
 } 
}
 }

最佳答案

您不需要 for 循环来执行此操作,在 public void data 中创建List<Payload>

public void data(@RequestBody DataRequestModel dataRequestModel)  {

  List<Payload> list = new ArrayList<>();
  // first object
  Payload payload1 = new Payload();
  payload1.setGuid(//set value);
  payload1.setLongValue(dataRequestModel.getData().getValue1().getVal());
  payload1.setTimestamp(dataRequestModel.getTimestamp());
  list.add(payload1);
  // second object
  Payload payload2 = new Payload();
   payload12setGuid(//set value);
  payload2.setLongValue(dataRequestModel.getData().getValue2().getVal());
  payload1.setTimestamp(dataRequestModel.getTimestamp());
  list.add(payload2);

最后返回List

关于java - 我为每个 json 负载都有 DTO。我通过http post请求获取有效负载。我得到两个有效负载,但如何将它们组合成最终有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55944155/

相关文章:

javascript - 如何在 JavaScript 中将元素插入嵌套数组?

javascript - 节点获取映射错误 - 无法读取未定义的属性 'map'”

mysql - 将json字符串插入mysql

mongodb - 使用 ssl 从 spring boot 应用程序连接到 MongoDB

java - Camel - 无法访问休息服务

java - ReSTLet 代码可以在本地运行,但在部署时无法运行(在 Openshift 上)

java - 尝试将数据插入 HBase 时无限期暂停

java - Spring-Integration 事务在管道其余部分之前提交

java - Spring boot 在单元测试中删除实体会导致 StaleStateException : Batch update returned unexpected row count from update

java - 无法使用线程执行代码块中的所有语句