小编Dmi*_*try的帖子

使用Jackson将嵌套数组反序列化为ArrayList

我有一块JSON,看起来像这样:

{
  "authors": {
    "author": [
      {
        "given-name": "Adrienne H.",
        "surname": "Kovacs"
      },
      {
        "given-name": "Philip",
        "surname": "Moons"
      }
    ]
   }
 }
Run Code Online (Sandbox Code Playgroud)

我创建了一个存储作者信息的类:

public class Author {
    @JsonProperty("given-name")
    public String givenName;
    public String surname;
}
Run Code Online (Sandbox Code Playgroud)

还有两个包装类:

public class Authors {
    public List<Author> author;
}

public class Response {
    public Authors authors;
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但有两个包装类似乎是不必要的.我想找到一种方法来删除Authors类,并将列表作为Entry类的属性.杰克逊有可能做到这样吗?

更新

使用自定义反序列化器解决了这个问题:

public class AuthorArrayDeserializer extends JsonDeserializer<List<Author>> {

    private static final String AUTHOR = "author";
    private static final ObjectMapper mapper = new ObjectMapper();
    private static …
Run Code Online (Sandbox Code Playgroud)

java arrays json jackson

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

是什么区别[\ s\S]*?和.*?在Java正则表达式?

我已经开发了一个正则表达式来识别文本文件中的xml块.表达式看起来像这样(我删除了所有java转义斜杠以使其易于阅读):

<\?xml\s+version="[\d\.]+"\s*\?>\s*<\s*rdf:RDF[^>]*>[\s\S]*?<\s*\/\s*rdf:RDF\s*>
Run Code Online (Sandbox Code Playgroud)

然后我优化它并替换[\s\S]*?.*?It突然停止识别xml.

据我所知,\s意味着所有的空格符号,\S意味着所有的非白色间隔符号或[^\s]因此[\s\S]逻辑上应该相当于.我没有用贪婪的过滤器,所以可能是什么区别?

java regex xml

9
推荐指数
1
解决办法
7790
查看次数

在D3中选择子节点的正确方法

我创建了一个带有某些节点的SVG元素:

gnodes = svg.selectAll("g.node")
    .data(_nodes);   
var newNodes = gnodes.enter().append("g")
     .attr("class", "node")
     .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }) 
     .call(drag)
     .on('mouseover', onMouseOver)
     .on('mouseout', onMouseOut);

newNodes.append("circle")
    .attr("cx", 0)
    .attr("cy", 0)
    .attr("r", radius);

newNodes.append("image")
    .attr("xlink:href", getImage)
    .attr("x", -radius/2)
    .attr("y", -radius/2)
    .attr("width", radius + "px")
    .attr("height", radius + "px");
Run Code Online (Sandbox Code Playgroud)

在onMouseOver中,我想更改突出显示的圆圈的颜色,但是我无法从收到的数据中获得此项目:

function onMouseOver(d, i) {
   var c1 = d.select("circle"); // error
   var c2 = i.select("circle"); // error
   var c3 = d.selectAll("circle"); // error
   var c4 = i.selectAll("circle"); // …
Run Code Online (Sandbox Code Playgroud)

javascript svg d3.js

3
推荐指数
1
解决办法
6443
查看次数

如何使用 Node.js 和 npm 自动压缩文件

有没有办法在构建时使用 Node.js 和 npm 自动压缩某些文件?

例如,我有一个项目,该文件结构如下所示:

Project/
--lib/
--node_modules/
--test/
--index.js
--package.json
Run Code Online (Sandbox Code Playgroud)

例如,我希望能够将 lib 文件夹、node_modules 和 index.js 中的某些模块压缩到一些 zip 存档中,以将其上传到 AWS Lambda 上。我不需要压缩测试文件夹或测试 Node.js 模块(mocha 和 chai)。我什至创建了一个用于生成 zip 文件的 bash 脚本,但是有没有办法在调用“npm install”时自动执行这个脚本?

这应该是一个标准的问题,它应该有一个标准的解决方案,但我无法发现这样的问题。

更新

感谢 michael,决定使用 gulp。这是我的脚本,以防其他人需要它用于 AWS Lambda:

var gulp = require('gulp');
var clean = require('gulp-clean');
var zip = require('gulp-zip');
var merge = require('merge-stream');

gulp.task('clean', function () {
    var build = gulp.src('build', {read: false})
        .pipe(clean());
    var dist = gulp.src('dist', {read: false})
        .pipe(clean());

    return merge(build, dist);
});

gulp.task('build', function() { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js aws-lambda

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

标签 统计

java ×2

javascript ×2

arrays ×1

aws-lambda ×1

d3.js ×1

jackson ×1

json ×1

node.js ×1

regex ×1

svg ×1

xml ×1