有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么Stripe在javaapi中使用Map

在Stripe java api中使用HashMap的原因是什么

从条纹开始。com:

Stripe.apiKey = "sk_test_BQokikJOvBiI2HlWgH4olfQ2";

Map<String, Object> ownerParams = new HashMap<String, Object>();
ownerParams.put("email", "payinguser+fill_now@example.com");

Map<String, Object> sourceParams = new HashMap<String, Object>();
sourceParams.put("type", "bitcoin");
sourceParams.put("amount", 1000);
sourceParams.put("currency", "usd");
sourceParams.put("owner", ownerParams);

Source source = Source.create(sourceParams);

Map<String, Object> chargeParams = new HashMap<String, Object>();
chargeParams.put("source", source.getId());
chargeParams.put("amount", source.getAmount());
chargeParams.put("currency", source.getCurrency());
Charge charge = Charge.create(chargeParams);

为什么不将简单java对象与getter和setter一起使用呢? (我知道我可以用Java自己实现,因为它只是http请求)


共 (2) 个答案

  1. # 1 楼答案

    我不知道确切的细节,但原因似乎很简单。他们希望避免设置&;取而代之的是获取他们使用的每个属性,映射以获得相应设置的键和值。他们很可能正在处理JSON。即使是XML,使用映射也比通过普通对象处理要容易得多,因为每次都需要手动设置和获取所需的每个属性。相反,许多属性可以是可选的,所以只需设置通过map传递的值,因为在map上迭代比对象更容易

  2. # 2 楼答案

    这是我一次又一次看到的模式。我们可以:

    1. 使用地图作为DTO
    2. 使用MyClass扩展对象(POJO)作为DTO

    关于这个话题有很多线索123

    然而,从Stripe中显示的并不是确切的,它们只是在将请求属性转换为POJO之前,使用Map作为填充请求属性的中介

    因此,这更像是用作POJO构建器模式的地图。那么,备选方案将是:

    Source source = new Source.Builder()
        .withType(type)
        .withAmount(amount)
        .build();
    

    这是我更喜欢的,也是AWS(例如)的大多数工作方式

    但我认为,从JSON序列化程序的角度来看,转换一个映射,然后向POJO中添加一堆语法错误和框架y内容更为简单。所以,基本上只是一个实施决定

    此外,如果与少量请求对象相比,您的API具有大量的请求属性,那么我认为它们开始更像字段字典,而不是结构化数据

    以免我们忘记,在经历了所有花哨的Java废话之后,这将是一个JSON中的字符串字典。真的,尤罗