小编Rup*_*tes的帖子

如何使用Jackson对以下json进行反序列化

我有以下json:

{
  "id":"myid",
  "fields":{
    "body":"text body"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想反序列化到以下Java类:

class TestItem {
private String id;
private String body;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getBody() {
    return body;
}

public void setBody(String body) {
    this.body = body;
}
Run Code Online (Sandbox Code Playgroud)

使用Jackson Json解串器.这不起作用,因为该body字段嵌套在fields内部类中.

我无法改变json结构,所以有什么方法(也许使用注释)我可以重新映射body字段TestItem.fields.bodyTestItem.body

编辑: 我应该说这是一个更大的类层次结构的一部分,练习的目的是减少它的深度.换句话说,我知道我可以声明一个内部类然后访问它,但这不是我想要实现的.

java json jackson

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

Android上的java.util.regex.PatternSyntaxException

java.util.regex.PatternSyntaxException试图用正则表达式(?<=}),(?=\\{)对字符串调用string.split(),例如"{test},{test}"

当我在JVM上的单元测试中运行它时(即不在Android上),这很好用,但在Android上我得到以下堆栈跟踪:

  java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX near index 5:
        (?<=}),(?=\{)
        ^
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
        at android.app.ActivityThread.access$1500(ActivityThread.java:117)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:130)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX near index 5:
        (?<=}),(?=\{)
        ^
        at java.util.regex.Pattern.compileImpl(Native Method)
        at java.util.regex.Pattern.compile(Pattern.java:400)
        at java.util.regex.Pattern.<init>(Pattern.java:383)
        at java.util.regex.Pattern.compile(Pattern.java:374)
        at java.lang.String.split(String.java:2021)
        at java.lang.String.split(String.java:2002)
Run Code Online (Sandbox Code Playgroud)

我想知道Android运行时是否不支持正则表达式前瞻,任何人都可以确认这一点或提供解决此问题的任何建议吗?

regex android

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

如何在Scala中声明性地创建列表?

在C#中,我可以声明性地声明一个列表,换句话说,声明它的结构并在下面同时初始化它:

var users = new List<User>
            {
                new User {Name = "tom", Age = 12}, 
                new User {Name = "bill", Age = 23}
            };
Run Code Online (Sandbox Code Playgroud)

忽略.Net中的List和Scala中的List之间的差异(即,随意使用不同的集合类型),是否可以在Scala 2.8中执行类似的操作?

UPDATE

从下面调整Thomas的代码我相信这是与所示C#代码最接近的代码:

class User(var name: String = "", var age: Int = 0)

val users = List(
  new User(name = "tom", age = 12), 
  new User(name = "bill", age = 23))
Run Code Online (Sandbox Code Playgroud)

collections scala declarative-programming

4
推荐指数
1
解决办法
1311
查看次数

使用Guava CacheBuilder/MapMaker计算自定义缓存大小

我想知道目前是否有一种方法可以使用Guava MapMaker或者是一种使用CacheBuilder的方法,以提供计算缓存是否在最大大小范围内的函数?

看起来当前驱逐仅仅基于缓存中的元素数量与.maximumSize()值相比,但是我想将结果映射用作位图的缓存,其可以包含非常小或非常大的条目.因此,我希望能够提供一个函数,该函数根据正在使用的内存条数量来计算缓存大小,然后允许缓存在此基础上逐出.

java guava

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