JSON을 참조로 전달한 다음 그 내용을 추가하려고합니다. $json.commontokens.search.tokens.token
를 구축 (키가 알 수없는 변경 수 있기 때문에) $json.commontokens.search.tokens.token += $newItem
참조로 전달하는 powershell
내가 $jsonList
에서 문자열 목록에 $json
다음 키를 계속 :
$jPath = $json
foreach($item in $jsonList){
$jPath = $jPath.$item
}
결과적으로 $jpath += $newItem
은 변경 사항을 $json
으로 유지하지 않습니다 (그러나 $jpath
에서 작동 함). 그래서 나는 변화를 지키기 위해 참조로 전달해야한다고 생각했습니다.
function adder{
param(
[ref]$j
$stringList
)
if ($stringList -ne $null) {
$first = $stringList.first.value
$stringList.removefirst()
adder ([ref]$j.value.$first) $stringList
} else {
return $j
}
}
$jpath = adder ([ref]$json) $jsonList
$jpath.value += $newItem
같은 뭔가 다시, 이것은 $jpath
작동,하지만 아무것도 $json
에 발생하지 않습니다. $jpath.value[70]
을 시도하면 예상 답변을 얻을 수 있지만 $json[70]
은 존재하지 않습니다. 실제로, 나는 기능없이 시도했다 :
$jpath = [ref]$json.commontokens.search.tokens.token
$jpath.value += $newItem
그러나 여전히 작동하지 않는다. 참조하는 일을 잘못하고 있습니까? 아니면 열쇠와 관련이 있습니까?
귀하의 기능과 관련이있을 수 있습니다. 나는 당신이 함수 "가산기"를 만들고 그것의 내부에서 "가산기"를 참조하는 것을 본다. 그것은 당신이 무엇을 참조하고 있는지 알지 못하는 것에 대해 어떤 종류의 오류를 줄 것입니다. –
개체 참조를 취하는 함수에 인수를 전달할 때 호출에 참조를 포함해야합니다 (예 :'adder -j ([ref] $ Json) -stringList $ List'). '$ j'를 반환 할 필요가 없습니다.'$ j.Value'를 조작해야합니다 (또한 유효한 객체를 전달하십시오) – TheIncorrigible1
설명 :'return $ j.Value','$ j.Value + = 예제에서 $ first'와'$ jpath + = $ newItem'은 이것을 지워야합니다. – TheIncorrigible1