小编kag*_*ag0的帖子

为什么要在JSON中使用字符串来表示十进制数

某些API(如paypal API)使用JSON中的字符串类型来表示十进制数.所以"7.47"代替7.47.

为什么/何时使用json数值类型是个好主意?AFAIK数值类型允许无限精度以及科学记数法.

serialization json paypal

37
推荐指数
4
解决办法
3万
查看次数

杰克逊将额外的字段反序列化为地图

我希望将JSON对象中的任何未知字段反序列化为地图中的条目,该地图是pojo的成员.

例如json

{
  "knownField" : 5,
  "unknownField1" : "926f7c2f-1ae2-426b-9f36-4ba042334b68",
  "unknownField2" : "ed51e59d-a551-4cdc-be69-7d337162b691"
}
Run Code Online (Sandbox Code Playgroud)

和pojo

class myObject{
  int knownField;
  Map<String, UUID> unknownFields;
  // getters/setters whatever
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用杰克逊配置?如果没有,是否有一种有效的方法来编写StdDeserializer它(假设值unknownFields可以是更复杂但众所周知的一致类型)?

java json jackson deserialization

18
推荐指数
1
解决办法
5395
查看次数

Jackson JsonNode打字收藏

将Jackson转换JsonNode为java集合的正确方法是什么?

如果它是一个JSON字符串我可以使用ObjectMapper.readValue(String, TypeReference),但对于一个JsonNode唯一的选择是ObjectMapper.treeToValue(TreeNode, Class)这不会给一个类型集合,或者ObjectMapper.convertValue(Object, JavaType)这是考虑其接受转换任何POJO的感觉错了.

还有其他"正确"方式还是其中之一?

java json type-erasure jackson

16
推荐指数
3
解决办法
2万
查看次数

Travis CI上的缓存码头图像

是否可以在Travis CI上缓存泊坞窗图像?尝试使用travis.yml中的cache.directories 缓存/var/lib/docker/aufs/diff文件夹和/var/lib/docker/repositories-aufs文件似乎不起作用,因为它们需要root.

performance continuous-integration caching travis-ci docker

12
推荐指数
1
解决办法
5761
查看次数

是否有可能使用杰克逊从Pojo获得价值

在将字段序列化为JSON时,Jackson会考虑许多因素.是否可以反过来使用这些因子,以便根据序列化后的名称检索pojo中字段的值?

例如,给定bean

public class Bean{
    private Bean2 prop;

    @JsonProperty("property")
    public Bean2 getProp();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能只获得prop给定的值ObjectMapper,字符串"property"和实例Bean

我知道反思,所以如果我能得到,"prop"或者"getProp"我会非常好.

java reflection json jackson

10
推荐指数
2
解决办法
2686
查看次数

编写Java函数和使用者

功能组成java Function和a 的最佳方法是Consumer什么?例如,给定一些Function<Object, String> f和一些Consumer<String> c然后做的f.andThen(c)感觉自然,然而这不是接口的工作方式.

这两个选项我看到的是要么更换Consumer<String> cFunction<String, Void> c或更改Consumer<String> c,以BiConsumer<Function<Object, String>, String> c

accept(Function<Object, String> f, Object o) {
    String thing = f.apply(o);
    //do something with thing
}
Run Code Online (Sandbox Code Playgroud)

其中一个比另一个好吗?有没有更好的办法?

java functional-programming function-composition java-8

8
推荐指数
1
解决办法
3325
查看次数

CORS和OAuth 2授权代码流程

我有一个受OAuth 2授权代码流保护的后端应用程序.前端(浏览器中的javascript)命中后端的授权端点,后端将浏览器重定向到授权代码服务器,用户进行身份验证,然后授权服务器使用授权代码将浏览器重定向回后端后端赎回令牌以访问某些服务.

问题是这些重定向都是连续发生的,浏览器中的CORS阻止了交换.服务器需要做什么才能使这个流程工作?

browser                                 -> POST app.com/auth
307 auth.com/auth?redirect=app.com/auth <-
browser                                 -> POST auth.com/auth?redirect=app.com/auth (with authorization header)
307 app.com/auth?authcode=fubar         <-
browser                                 -> POST app.com/auth?authcode=fubar
Run Code Online (Sandbox Code Playgroud)

大概是怎么回事.

编辑:浏览器说

XMLHttpRequest无法加载http://app.com/autho.该请求被重定向到" http://autho.com/auth?response_type=code&redirect_uri=http://app.com/autho&state=639bfbe7-fd20-4c04-8feb-c9f60f4d55a9&client_id=0xdeadbeef ",不允许跨域来源需要预检的请求.

EDIT2:所以重定向工作正常没有Authorization标题.猜猜现在数据正在进行中.

javascript authentication redirect cors oauth-2.0

8
推荐指数
1
解决办法
7561
查看次数

Scala 隐式参数被编译器标记为未使用

在 scala 中编译时-Ywarn-unused,隐式参数被标记为从不使用,即使它们在隐式作用域中使用。

例如

class MyClass(implicit: ec: ExecutionContext) {
  def fun = Future.successful("hi").map(_.length)
}
Run Code Online (Sandbox Code Playgroud)

这在运行时也是有问题的-Xfatal-warnings

有没有办法提示编译器实际上使用了这些参数?如果没有,是否有另一种方法可以确保代码不会使用未使用的参数和声明进行编译?

scala

8
推荐指数
1
解决办法
645
查看次数

如何使用类加载器和注释

我正在尝试从方法中获取注释,但遇到了一些麻烦。我正在做的是使用 URLClassLoader 加载 jar 文件,然后使用反射和 Method.getAnnotation 检查该 jar 中类中方法的注释。
我遇到的问题是 Method.getAnnotation 将始终返回 null,即使注释存在(我们可以使用 Method.getAnnotations 看到)。我已经在未使用 URLClassLoader 加载的类上的相同注释类型上测试了相同的过程,并且工作正常。
更深入的调查表明,instance.annotationType() 和 MyAnnotation.class 的规范名称是相同的。但是,instance.annotationType().equals(MyAnnotation.class) 返回 false。然而,实例本身是一个代理 (com.sun.proxy)。

有没有一种方法可以在不进行大量反射的情况下获取注释和注释的字段?

instance.annotationType().getMethod("value").invoke(instance)
Run Code Online (Sandbox Code Playgroud)

上面的方法可以获取该字段,并且通过对规范名称进行字符串比较来迭代 Method.getAnnotations 的结果将为我提供注释,但肯定有更好的方法吗?

也为了教育价值,是什么原因造成的?我的猜测是,这是因为系统类加载器加载的注释的类与 URL 类加载器加载的注释的类在某种程度上不同。

java reflection annotations classloader kotlin

6
推荐指数
1
解决办法
2351
查看次数

在函数式编程术语中,使用 orElse 或其他后备方法的东西怎么称呼?

以 scala 为参考,我们在几个地方看到了后备行为 ( orElse),例如PartialFunctionOption和 cats EitherOps

这感觉类似于单子的扁平化行为,但又不同。是否有函数式编程术语来描述表现出这种行为的事物?

编辑:到目前为止,我发现了一些很好的答案,在猫身上进行了更多挖掘

Semigroup[Option[String]].combine(None, Some("b"))
res0: Option[String] = Some(b)

Semigroup[Option[String]].combine(Some("a"), Some("b"))
res1: Option[String] = Some(ab)

SemigroupK[Option].combineK(None, Some("b"))
res2: Option[String] = Some(b)

SemigroupK[Option].combineK(Some("a"), Some("b"))
res3: Option[String] = Some(a)

SemigroupK[List].combineK(List("a"), List("b"))
res4: List[String] = List(a, b)

Alternative[List].unite(List(None, Some("a"), Some("b")))
res4: List[String] = List(a, b)
Run Code Online (Sandbox Code Playgroud)

所以我现在发现 scalazAlt和 haskellAlternative与 cats 不太一样Alternative。更有趣的是(根据 cats 文档在 scalaz 中SemigroupK调用)。 那么我们是否可以说这种行为是由一种类型表现出来的,如果没有其内部类型的半群,则无法为其定义半群(因为这样我们可能会说 scalaz和 haskell是此类的半群)?Plus
AltAlternative

functional-programming scala partialfunction scala-cats

6
推荐指数
1
解决办法
359
查看次数