小编Kon*_*ner的帖子

杰克逊如何在不投射的情况下将JsonNode转换为ArrayNode?

我正在将我的JSON库从org.json更改为Jackson,我想迁移以下代码:

JSONObject datasets = readJSON(new URL(DATASETS));
JSONArray datasetArray =  datasets.getJSONArray("datasets");
Run Code Online (Sandbox Code Playgroud)

现在在杰克逊我有以下内容:

ObjectMapper m = new ObjectMapper();
JsonNode datasets = m.readTree(new URL(DATASETS));      
ArrayNode datasetArray = (ArrayNode)datasets.get("datasets");
Run Code Online (Sandbox Code Playgroud)

但是我不喜欢那里的演员,是否有可能ClassCastException?是否有一个等效的方法getJSONArray,org.json以便我有适当的错误处理,以防它不是一个数组?

java json jackson

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

如何阅读newbs的API文档?

我正在阅读Photoshop,Illustrator和InDesign的JavaScript脚本指南.API真的很难读,因为它假设我知道某些简写约定.问题不仅限于此特定脚本指南.我可以列出几十个出现同样问题的人.

当我将API作为一个24小时不在代码中的人阅读时,我想查看一些内容,并以最基本的形式查看代码的简单示例.但通常一开始就不容易理解它.

这是一个例子.我正在查找如何在Photoshop中通过JavaScript更改项目的颜色.所以我搜索PDF并找到"fillColor".我在文档中找到了这个:

fillPath
([fillColor]
[, mode]
[, opacity]
[, preserveTransparency] [, feather]
[, wholePath] [, antiAlias])
Run Code Online (Sandbox Code Playgroud)

当我读到这篇文章时,乍一看毫无意义.为什么有括号,我怎么知道我不应该在实现中使用它们?为什么括号中有逗号?我知道从我找到的样本代码应该是什么样的,这是:

myPath.fillPath(myNewColor)

myPath.fillPath(mynewColor, {
    mode: RGB,
    opacity: .5
})
Run Code Online (Sandbox Code Playgroud)

如果我没有看到这个例子,我绝对不会从API代码中看出这个方法在实现时的外观.其他人指出这个方法的扩展示例可能如下所示:

fillPath
([fillColor]
[, mode]
[, opacity]
[, preserveTransparency] [, feather]
[, wholePath] [, antiAlias])
Run Code Online (Sandbox Code Playgroud)

好.我看到我可以省略隐含的可选参数.精细.但同样,我绝不会从API中猜到这一点.

那么,某处是否有一些神秘的文件告诉人们如何阅读API文档?为什么这样写?我有什么先验知识?为什么会这样,我该怎么做才能停止对它的疑惑并"得到"它,所以我可以更乐意阅读并实现下一个API?

那么为什么API文档的编写方式会混淆像我这样的常年新手/黑客/ DIY玩家呢?

api documentation

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

如何阻止Eclipse自动添加括号?

例如,如果我输入"整数".然后点击CTRL + SPACE,现在从列表中选择"valueOf",Eclipse总是在函数名后添加"()".这对我来说真的很烦人,因为我经常会有一个已经存在的语句,并想要围绕它包装一个函数.

示例: 我想要改变

String x = "hello world";
Run Code Online (Sandbox Code Playgroud)

String x = StringManipulator.uppercase("hello world");
Run Code Online (Sandbox Code Playgroud)

如果我写

String x = StringManipulator."hello world";
Run Code Online (Sandbox Code Playgroud)

并在点字符上按CTRL + SPACE,它会插入

String x = StringManipulator.uppercase()"hello world";
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?我不需要自动括号关闭但只是阻止Eclipse自动插入它们会对我有所帮助.

eclipse parentheses

33
推荐指数
3
解决办法
8699
查看次数

Javadoc @return标签评论重复是否必要?

对于不更改实例状态的函数,该方法的javadoc注释通常与Java-API中@ return-tag的注释相同或非常相似.

boolean Collection.isEmpty()

  • 如果此collection不包含任何元素,则返回true.
  • 返回:如果此collection不包含任何元素,则返回true

现在我正在为许多简单的方法编写javadoc,比如getExpression(),我遇到同样的问题.我应该像在API中那样做还是把它留下来?

java javadoc

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

ES6模块:导入后未定义的onclick功能

我正在测试ES6模块,并希望让用户使用onclick以下方法访问一些导入的函数:

的test.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Module Test</title>
</head>
<body>
    <input type="button" value="click me" onclick="hello();"/>
    <script type="module">import {hello} from "./test.js";</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

test.js:

export function hello() {console.log("hello");}
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时,开发人员控制台会说:ReferenceError:未定义hello.如何从模块导入函数,以便它们可用作onclick函数?

我正在使用Firefox 54.0 dom.moduleScripts.enabled设置为true.

javascript ecmascript-6 es6-modules

22
推荐指数
3
解决办法
7155
查看次数

如何在生产环境中包含 Vite 中 node_modules 的 CSS?

我有一个 typescript Web 应用程序,其中包含来自其 NPM 依赖项的 CSS 文件,如下所示:

<link rel="stylesheet" type="text/css" href="./node_modules/notyf/notyf.min.css" />
Run Code Online (Sandbox Code Playgroud)

将 vite 添加到我的项目后,它可以在开发模式 ( vite) 下工作,因为它提供来自我的开发文件夹的内容,其中存在 node_modules 的路径。但是,这会在生产 ( vite build) 或预览模式 ( ) 中中断,在生产模式 ( ) 或预览模式 ( vite preview) 中,它会在另一个文件夹中提供,并且 node_modules 文件夹不会包含在输出中。

我的旧工作流程仅npm install在 Web 服务器上,因此它的所有依赖项都在 node_modules 文件夹中,但这不适用于 Vite 捆绑的应用程序。

我查阅了手册,包括https://vitejs.dev/guide/features.html#css但手册中的所有示例都涉及使用 PostCSS、React、Vue、tailwind、SASS 等框架和库的人。但是我没有使用任何这些技术。

如何让 Vite 将来自 NPM 依赖项的 CSS 文件包含在一个简单的打字稿应用程序中,该应用程序由 ES6 模块组成,没有任何框架?

手册说了一些关于导入的内容,但我不明白,如何以及在哪里导入CSS,在index.html中还是在模块中?

css npm typescript vite

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

Javascript ES6模块没有传递.htaccess基本身份验证

当我运行以下JavasScript时,我可以成功登录但不能访问模块.如何将身份验证传递给他们?

示例代码

<DOCTYPE html>
<html>  
<head>
    <meta charset="utf-8">
</head>  
<body>
    <script type="module">
        import * as mymodule from "./js/mymodule.js";
        mymodule.runme();
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

GET [...]mymodule.js [HTTP/1.1 401 Authorization Required 1ms]在Firefox 54上使用基本身份验证的.htaccess打开它(dom.moduleScripts.enabled,它可以在没有.htaccess的情况下工作).

的.htaccess

AuthType Basic
AuthName "Internal Area"
AuthUserFile /opt/.../.htpasswd
Require valid-user
Run Code Online (Sandbox Code Playgroud)

javascript .htaccess es6-modules

20
推荐指数
2
解决办法
673
查看次数

为什么"locate filename | xargs vim"导致奇怪的终端行为?

当我"找到50local.policy | xargs vim"时,我收到错误"Vim:Warnung:Die Eingabe kommt nicht von einem Terminal"(翻译:Vim:警告:输入不是来自终端).

我可以用vim成功编辑但是在我关闭之后我的终端表现得很奇怪(我不能输入字母,当我点击进入shell提示只是重复.当我用"xargs gedit"做它时它不会产生那些问题.

我使用Ubuntu 11.10与Gnome 3和Gnome-Terminal 3.0.1.

vim terminal xargs

18
推荐指数
2
解决办法
2658
查看次数

使用Java 8 lambda表达式的intelliJ IDEA"覆盖方法"警告

当使用lambda表达式时,我得到一个警告"在java.util.function.Function中覆盖方法", new Vector<String>().stream().map(String::toString);但据我所知这只是普通的lambda用法.如何在不删除合法覆盖警告的情况下摆脱此警告?

我在Arch Linux上的Gnome上使用了IntelliJ IDEA 2016.1.3和OpenJDK 8.

intellij-idea compiler-warnings

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

如何抑制SLF4J关于多个绑定的警告?

我的java项目具有不同SLF4J版本的依赖项.如何抑制恼人的警告?

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:xyz234/lib/slf4j-
log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:xyz123/.m2/repository/org/slf4j/slf4j-log4j12
/1.6.0/slf4j-log4j12-1.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Run Code Online (Sandbox Code Playgroud)

PS:这与slf4j警告关于相同绑定重复的问题不一样,答案是如何摆脱虚警警告,但在我的情况下,这是一个真正的警告.PSS:对不起,我忘了提一下:我使用Maven和SLF4J包含在我的依赖项的依赖项中.

binding warnings suppress slf4j maven

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