我是json的新手.我见过的一些json示例在花括号内有数据,有些json示例在方括号内有子数据.
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
来自http://json.org/example.html
在方括号内放置数据的需要/目的是什么?
问候
在某些情况下,键入一个开口方括号根本不会产生任何结果.特别是当我想在赋值表达式右侧的变量上键入它们时:
arr[i] = arr
Run Code Online (Sandbox Code Playgroud)
所以我不能输入,例如:
arr[i] = arr[9]
Run Code Online (Sandbox Code Playgroud)
它与Resharper有关.然而,自动完成和东西的转变似乎并没有解决它.有谁熟悉这个问题?
c# resharper visual-studio-2010 square-bracket visual-studio
做了一些搜索但找不到任何有用的东西.我想知道是否有一个摘要表,供初学者了解使用parens/bracket的"规则",特别是(),[],{}之间的差异.不幸的是,根据我的经验,use strict并use warnings没有告诉我,如果我使用错误的parens.
例如,下面是合法代码(b/c来自ikegami).
@{"genotype".($i)}
@{$genotype[$i]}
$genotype[$i] = [ split (/:/, $original_line[$i])]
my @genotype = map {[split /:/]} @original_line[6..14]
Run Code Online (Sandbox Code Playgroud)
但这些下面也是合法的吗?通常情况下(对我来说)知道代码的其他部分(逻辑)是否导致问题是很困难的.通过parens对我(初学者)进行排序对于良好的编码似乎微不足道.任何关于如何正确使用parens的指南都会很棒.
@{"genotype".[$i]}
@["genotype".($i)]
@("genotype".($i))
@{$genotype($i)}
@[$genotype($i)]
$genotypes[$i] = ( split (/:/, $original_line[$i]))
my @genotype = map ([split /:/]) @original_line[6..14]
Run Code Online (Sandbox Code Playgroud) 我在Windows 7上使用PowerShell,并编写脚本将一堆文件从一个文件夹结构复制到另一个文件夹结构.有点像编译.PowerShell Copy-Itemcmdlet认为方括号[]是某种通配符,并且由于某种原因我无法逃脱它们.
我不能使用-LiteralPath,因为我想使用星号*通配符,因为文件名的日期是文件名的一部分,日期会改变.日期用作版本号.
这篇文章很有帮助,但是方括号中没有任何数量的刻度(每个括号2x或4x).
我没有收到错误; PowerShell的行为与我输入错误的文件名时的行为相同.
这是我正在研究的具体方法:
#to Fusion Server
Copy-item -Path $FSG\$SW\0.RoomView.Notes\starter\"[RoomView] Versions explained*.pdf" -Destination $FSG\$containerFolder\$rootFolder\"Fusion Server"\
Run Code Online (Sandbox Code Playgroud)
这就是整个事情:
# Compiles the Fusion packet for distribution
###############################
###########Variables###########
###############################
#folder structure
$FSG = "F:\FSG"
$containerFolder = "Packet.Fusion for IT and AV Professionals"
$rootFolder = "Fusion for IT and AV pros $(Get-Date -format “MM-dd-yyyy”)"
$subRoot1 = "Fusion Server"
$subRoot2 = "Scheduling Enhancement and Panels"
$subRoot2sub1 = "Scheduling Panels"
$subRoot3 = "SQL Server"
#source folders
$HW = …Run Code Online (Sandbox Code Playgroud) 我已请求设置为用户启用的服务列表.
请求格式如下:
https://myserver.com/setservices?param1=val1m2=val2&service[10]&service[1000]&service[10000]
服务参数列表("service [10]&service [1000]&service [10000]")是动态创建的,每个参数都没有值.是否有可能使用Retrofit实现这一目标?
所以,假设我们有一个简单的对象,它包含两种不同语言的字符串
welcomeText = {"de": "Willkommen zurück!", "en": "Welcome back!"}.
该welcomeText是的属性Texts包含所有文本,并得到异步传输对象(所以我需要照顾可能未定义的值,因此猫王运营商).现在,在我的angular2模板中,我想基于当前选择的语言显示文本.
这是有效的(但不是我需要的):
..
{{Texts?.welcomeText?.de}} // works, as well as {{Texts?.welcomeText?.en}}
..
Run Code Online (Sandbox Code Playgroud)
我想要的是这个(因为语言可以改变):
..
{{Texts.?welcomeText?[language]}}
..
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致错误:
EXCEPTION: Template parse errors:
Parser Error: Conditional expression
{{Texts?.welcomeText?[language]}}
requires all 3 expressions at the end of the expression ..
Run Code Online (Sandbox Code Playgroud)
不知道如何解决这个错误.我只是不确定我是否使用它错了,或者它是不是打算像那样工作.目前我使用一个简单的解决方法,但我发现它有点难看,因为我有一个方法调用到处想要显示文本:
..
{{getText('welcomeText')}}
..
..
getText(name : string){
if(this.Texts)
return this.Texts[name][this.language]
..
Run Code Online (Sandbox Code Playgroud)
这是仅仅是要走的路还是有办法以我想要的方式做到这一点,用elvis算子?
非常感谢任何答案!
设置好之后eslint-plugin-security,我继续尝试解决我们javascript代码库中方括号的近400种用法(由安全性/检测对象注入规则标记)。尽管此插件可能更智能,但方括号的任何使用都可能成为恶意代理注入自己的代码的机会。
要了解如何理解问题的整个上下文,您需要阅读以下文档:https : //github.com/nodesecurity/eslint-plugin-security/blob/master/docs/the-dangers-of-square -bracket-notation.md
我通常尝试使用Object.prototype.hasOwnProperty.call(someObject, someProperty)可以减轻someProperty恶意设置的机会的方法constructor。许多情况只是在for循环(for (let i=0;i<arr.length;i++) { arr[i] })中取消引用数组索引。如果i始终为int,则显然始终是安全的。
我认为我无法完美处理的一种情况是如下方括号分配:
someObject[somePropertyPotentiallyDefinedFromBackend] = someStringPotentiallyMaliciouslyDefinedString
Run Code Online (Sandbox Code Playgroud)
StackOverflow的现状是“向我展示所有代码”-当您遍历一个代码库并在成百上千个实例中修复它们时,花很长时间才能阅读这些任务之一之前的代码。 。此外,我们希望确保此代码在将来进行修改时保持安全。
我们如何确保要设置的属性在香草对象上基本上尚未定义?(即constructor)
因此,我认为解决此问题的最简单方法是使用一个简单的util,safeKey定义如下:
// use window.safeKey = for easy tinkering in the console.
const safeKey = (() => {
// Safely allocate plainObject's inside iife
// Since this function may get called very frequently -
// I think it's important to have plainObject's …Run Code Online (Sandbox Code Playgroud) 我有一个巨大的代码使用由指针管理的3D数组.就像是:
int *** tab;
tab = malloc(m*sizeof(int**));
for(i= 1..n) tab[i] = malloc(n*sizeof(int*));
... etc...
Run Code Online (Sandbox Code Playgroud)
然后使用以下方法访问元素:
tab[i][j][k] = ...
Run Code Online (Sandbox Code Playgroud)
但由于此结构的特定问题,我想将tab声明为连续数组,但仍然在代码中使用带有3个括号的语法.编译器将在内部替换它们,如下所示:
tab[i][j][k] = ... => tab[i*m*n+j*m+k] = ...
Run Code Online (Sandbox Code Playgroud)
因此只使用一个指针解引用访问该数组.我不想更改源代码(没有sed).
例如,我可以通过在堆栈中声明制表符来完成此操作:
int tab[n][m][l];
Run Code Online (Sandbox Code Playgroud)
但不幸的是,如果m并且n是运行时变量,这不起作用.
因此,Ruby 有时候使用大括号而不是要求它们的宽松容忍度导致了很多混乱,因为我正在尝试学习Rails以及何时/何地使用它们以及为什么?
有时参数或值会像(@user, @comment)它们看起来那样传递,而其他时候传递[ :user => comment ]的只是::action => 'edit'
我在谈论[] vs () vs {}的我们
规则是什么?你有什么技巧可以帮助你记住吗?
我有8年的编码经验,但我从未见过运算符[]作为参数传递给函数定义.
例如,以下代码(来自开源项目):
bree::porder(m_root, [] (treenode* node) { delete node; });
Run Code Online (Sandbox Code Playgroud)
在我的编码生涯中,我总是定义[]为操作符重载程序,而不是参数.
那么这个新语法意味着什么呢?
我正在使用Visual Studio 2003附带的编译器.如何更改上面的代码以便在VS 2003中编译?
square-bracket ×10
c++ ×2
angular ×1
c ×1
c# ×1
copy ×1
curly-braces ×1
javascript ×1
jrubyonrails ×1
json ×1
key ×1
lambda ×1
parentheses ×1
perl ×1
powershell ×1
resharper ×1
retrofit ×1
ruby ×1
security ×1
url ×1
visual-c++ ×1