我正在将我的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
以便我有适当的错误处理,以防它不是一个数组?
我正在阅读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玩家呢?
例如,如果我输入"整数".然后点击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自动插入它们会对我有所帮助.
对于不更改实例状态的函数,该方法的javadoc注释通常与Java-API中@ return-tag的注释相同或非常相似.
boolean Collection.isEmpty()
现在我正在为许多简单的方法编写javadoc,比如getExpression(),我遇到同样的问题.我应该像在API中那样做还是把它留下来?
我正在测试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
.
我有一个 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中还是在模块中?
当我运行以下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) 当我"找到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.
当使用lambda表达式时,我得到一个警告"在java.util.function.Function中覆盖方法",
new Vector<String>().stream().map(String::toString);
但据我所知这只是普通的lambda用法.如何在不删除合法覆盖警告的情况下摆脱此警告?
我在Arch Linux上的Gnome上使用了IntelliJ IDEA 2016.1.3和OpenJDK 8.
我的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包含在我的依赖项的依赖项中.
es6-modules ×2
java ×2
javascript ×2
.htaccess ×1
api ×1
binding ×1
css ×1
eclipse ×1
ecmascript-6 ×1
jackson ×1
javadoc ×1
json ×1
maven ×1
npm ×1
parentheses ×1
slf4j ×1
suppress ×1
terminal ×1
typescript ×1
vim ×1
vite ×1
warnings ×1
xargs ×1