【问题标题】:Why do we need to convert objects into a Map?为什么我们需要将对象转换为 Map?
【发布时间】:2022-01-21 10:09:47
【问题描述】:

谁能解释一下(请用简单的话)为什么我们需要将对象转换为Map? 我在 medium.com 中看到了下面的代码,但没有得到它:

package com.nayan.examples;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.Map;
public class ObjectToMapExample {
    public static void main(String[] args) {
        ObjectMapper oMapper = new ObjectMapper();
        Student obj = new Student();
        obj.setName("nayan");
        obj.setAge(34);
        obj.setSkills(Arrays.asList("java","angular"));
        // object -> Map
        Map<String, Object> map = oMapper.convertValue(obj, Map.class);
        System.out.println(map);
    }
}

输出:

{name=nayan, age=34, skills=[java, angular]}

我们不能直接将valuekey 放在一起而不进行任何转换吗?

【问题讨论】:

  • 您发布的代码将对象转换为地图,因为这是代码的重点。
  • @khelwood 我知道,但是如果不转换对象,输出会改变吗?
  • 如果您不想将对象转换为地图,则不需要。如果你想知道为什么这个特定的代码将一个对象转换为一个地图,你应该问这个代码的作者。
  • 这不是我要问的。为了知道您是否需要它,您需要了解使用它的优点/缺点(对象转换器)。 @MarkRotteveel
  • 这很简单:如果您需要地图而不是对象,您可以这样做。如果您不需要地图,那么您不应该这样做。

标签: java spring spring-boot


【解决方案1】:

您找到的示例代码是关于对象映射的概念。想法是:您拥有携带信息的 java 对象,并且您希望自动将该信息转换为其他格式。

含义:从概念上讲,一个学生,它只是键/值对的集合,例如name is nayan

这里的基本部分:这段代码向您展示了如何将 Student 对象转换为另一种“格式”,在本例中,是带有键/值对的原始 Map。

您主要想在 持久性 发挥作用时使用它。含义:假设您要将数据存储为 JSON。您是否真的要手动编写所有代码来获取您的对象,将它们转换为 JSON 表示,反之亦然?不,你不需要(除非出于教育目的)。

【讨论】:

  • 非常感谢。我现在明白了。真正让我有一种使用对象转换器的感觉是最后一段,因为我目前正在学习 Spring Boot。
  • @Rahman 不客气。如果您觉得我的回答对您有帮助,请考虑接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多