标签: square-bracket

在json中使用方括号的目的是什么?

我是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

在方括号内放置数据的需要/目的是什么?

问候

json square-bracket

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

无法在Visual Studio 2010 + Resharper中键入某些方括号

在某些情况下,键入一个开口方括号根本不会产生任何结果.特别是当我想在赋值表达式右侧的变量上键入它们时:

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

12
推荐指数
1
解决办法
5555
查看次数

perl中parens/bracket使用的规则(?)

做了一些搜索但找不到任何有用的东西.我想知道是否有一个摘要表,供初学者了解使用parens/bracket的"规则",特别是(),[],{}之间的差异.不幸的是,根据我的经验,use strictuse 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)

perl square-bracket curly-brackets

12
推荐指数
1
解决办法
2718
查看次数

复制文件名中带方括号[]的文件并使用*通配符

我在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)

powershell copy square-bracket

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

动态地将没有值的查询参数添加到Retrofit请求

我已请求设置为用户启用的服务列表.

请求格式如下:

https://myserver.com/setservices?param1=val1m2=val2&service[10]&service[1000]&service[10000]

服务参数列表("service [10]&service [1000]&service [10000]")是动态创建的,每个参数都没有值.是否有可能使用Retrofit实现这一目标?

url square-bracket retrofit

10
推荐指数
2
解决办法
8300
查看次数

angular2 elvis操作符和括号符号/按键访问对象

所以,假设我们有一个简单的对象,它包含两种不同语言的字符串
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算子?
非常感谢任何答案!

key square-bracket angular

10
推荐指数
1
解决办法
4871
查看次数

安全设置未知属性(缓解方括号对象注入攻击)实用程序功能

设置好之后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)

javascript security code-injection square-bracket

10
推荐指数
1
解决办法
457
查看次数

如何访问具有多个括号的一维数组以提高可读性?

我有一个巨大的代码使用由指针管理的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是运行时变量,这不起作用.

c c++ multidimensional-array square-bracket c-preprocessor

9
推荐指数
2
解决办法
774
查看次数

大括号:Ruby&Rails中的[Brackets],(圆括号)和{Curlies}

因此,Ruby 有时候使用大括号而不是要求它们的宽松容忍度导致了很多混乱,因为我正在尝试学习Rails以及何时/何地使用它们以及为什么?

有时参数或值会像(@user, @comment)它们看起来那样传递,而其他时候传递[ :user => comment ]的只是::action => 'edit'

我在谈论[] vs () vs {}的我们

规则是什么?你有什么技巧可以帮助你记住吗?

ruby jrubyonrails curly-braces parentheses square-bracket

8
推荐指数
1
解决办法
6063
查看次数

奇怪的C++语法

我有8年的编码经验,但我从未见过运算符[]作为参数传递给函数定义.

例如,以下代码(来自开源项目):

bree::porder(m_root, [] (treenode* node) { delete node; }); 
Run Code Online (Sandbox Code Playgroud)

在我的编码生涯中,我总是定义[]为操作符重载程序,而不是参数.

那么这个新语法意味着什么呢?

我正在使用Visual Studio 2003附带的编译器.如何更改上面的代码以便在VS 2003中编译?

c++ lambda visual-studio-2003 square-bracket visual-c++

8
推荐指数
3
解决办法
782
查看次数