NutzCN Logo
问答 nutzmap getList问题
发布于 2807天前 作者 xwqiang 3068 次浏览 复制 上一个帖子 下一个帖子
标签:

先贴代码:

List<IdentityHashMap> groups = nm.getList("groups", IdentityHashMap.class);

我提交的参数(contentType:application/json)为:

{
        "groups":[
            {
                "性别":"男",
                "爱好":"读书",
                "爱好":"音乐"
            }
        ]
    }

用的 @AdaptBy(type = JsonAdaptor.class)
但是取到的参数为:"性别":"男", "爱好":"音乐" 会丢失一个,难道会先转化为hashMap?

12 回复

发现是JsonAdaptor 的处理的。

是pojo才是预知类型

对于这种情况我该怎么办?协议已经对外确定好了,貌似只能用map 。

为啥只能用map? 这是一个通用入口???

在参数格式不变的情况下,nm.get("groups") 取出来的结果是LinkedHashMap,这个时候已经丢失了数据。我觉得要解决这个问题,只能重写JsonAdaptor 或者放弃使用JsonAdaptor。

没懂你要干啥...

哦,我懂了, 竟然是重名的key, 好坑

嗯 ,不知道有解决方法没。
如果不行,那就改下协议,用普通的表单方式来提交了。

话说,为啥要设计成重名key呢???

其实这是一个查询表达式,做用户肖像过滤的,key + value 才是一个条件。为了方便页面渲染,在前端做了一些简化,也没想到这个问题。
取到数据后 会做转化表达式如:

        Query and1 = new And(new Value("/性别/男").not(),new Value("/年龄/23"));
        Query and2 = new And(new Value("/爱好/音乐"),new Value("/爱好/读书"));
        Query or =  new Or(and1,and2);
        System.out.println(query);

难道我要放弃使用application/json吗?

原来是查询语句.

我想了想, JsonAdaptor 处理不了的. 原因是JsonAdaptor 调用的Json.fromJson, 而Json.fromJson会先把转为Map, 然后才转目标类型.

改一下发送的内容,这样如何?

{
        "groups":[
            {
                "性别": ["男"],
                "爱好": ["读书", "音乐"]
            }
        ]
}

好 感谢,可以试试。

添加回复
请先登陆
回到顶部