我有以下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.body到TestItem.body?
编辑: 我应该说这是一个更大的类层次结构的一部分,练习的目的是减少它的深度.换句话说,我知道我可以声明一个内部类然后访问它,但这不是我想要实现的.
我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运行时是否不支持正则表达式前瞻,任何人都可以确认这一点或提供解决此问题的任何建议吗?
在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) 我想知道目前是否有一种方法可以使用Guava MapMaker或者是一种使用CacheBuilder的方法,以提供计算缓存是否在最大大小范围内的函数?
看起来当前驱逐仅仅基于缓存中的元素数量与.maximumSize()值相比,但是我想将结果映射用作位图的缓存,其可以包含非常小或非常大的条目.因此,我希望能够提供一个函数,该函数根据正在使用的内存条数量来计算缓存大小,然后允许缓存在此基础上逐出.