동적 JSON 개체를 빌드하는 방법모두,
JSL에서 동적 JSON 객체를 빌드하는 방법이 궁금합니다.
request = New HTTP Request(
url( "http://httpbin.org/post" ),
Method( "POST" ),
JSON( "\[{"username":"bob","address":"12345"}]\" )
);스크립팅 인덱스의 예를 사용하여 사용자 이름을 bob에서 mark로, 주소를 12345에서 12346으로 변경하고 그러한 호출이 10번 있는 경우 외부에서 동적 개체로 빌드하는 것을 선호합니다. 처음에는 Associative Array로 빌드한 다음 As JSON Expr() 을 사용하는 방법을 시도했지만 오류가 발생했습니다. 이 경우 내 접근 방식은 다음과 같습니다.
MyAA = Associative Array();
MyAA["username"] = "bob" ;
MyAA["address"] = "12345" ;<BR /><BR />request = New HTTP Request(
url( "http://httpbin.org/post" ),
Method( "POST" ),
JSON( As Json Expr(MyAA))
);
물론 이것은 이 예제에서는 발생하지 않지만 내가 호출하려는 API에서는 발생하지 않습니다. 그러나 하드 코딩된 JSON을 입력으로 전달하면 API 호출이 예상대로 작동합니다.

도움을 주시면 감사하겠습니다.
Re: 동적 JSON 개체를 만드는 방법그것은 단계별로 구축하기 위한 것이었습니다. 완전한 "하드 코딩된" 버전은
월별 요인 = { {
[ "month" => 1, "month_name" => "1월", "albedo" => 0.2, "soiling_loss" => 2.0],
[ "month" => 2, "month_name" => "2월", "albedo" => 0.2, "soiling_loss" => 2.0],
[ "월" => 3, "월_이름" => "3월", "알베도" => 0.2, "오염_손실" => 2.0]
}};
je = JSON Expr(monthlyFactors);
쇼(예);
일반적으로:
* JSON 배열은 JSL 목록에 매핑됩니다(매트릭스 또는 벡터가 아님, '[]' 유사성에 주의).
* JSON 사전은 JSL 연관 배열에 매핑됩니다.
* 평가되지 않은 변수 참조를 확인하십시오.
* 데이터 구조 수정 호출이 실제로 대상 개체를 변경하는지 확인합니다(수정된 복사본을 반환하는 것과 반대).
Re: 동적 JSON 개체를 만드는 방법그리고 JSON 형식의 문자열을 연결하기만 하면 JSON을 만들 수 있다는 사실을 잊지 마십시오.
목록이나 연관 배열이 필요하지 않습니다.
Re: 동적 JSON 개체를 만드는 방법JSON 편집기에서 크롬 추가를 사용하여 이와 같이 다시 작성하면 연관 배열 목록이 표시됩니다.
[
{
"month": 1,
"month_name": "Jan",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 2,
"month_name": "Feb",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 3,
"month_name": "Mar",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 4,
"month_name": "Apr",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 5,
"month_name": "May",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 6,
"month_name": "Jun",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 7,
"month_name": "Jul",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 8,
"month_name": "Aug",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 9,
"month_name": "Sep",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 10,
"month_name": "Oct",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 11,
"month_name": "Nov",
"albedo": 0.2,
"soiling_loss": 2
},
{
"month": 12,
"month_name": "Dec",
"albedo": 0.2,
"soiling_loss": 2
}
]

Re: 동적 JSON 개체를 만드는 방법이것은 작동하는 것 같습니다.
innerList = {};
InsertInto(innerList, [ "month" => 1, "month_name" => "1월", "albedo" => 0.2, "soiling_loss" => 2.0]);
InsertInto(innerList, [ "month" => 2, "month_name" => "2월", "albedo" => 0.2, "soiling_loss" => 2.0]);
InsertInto(innerList, [ "month" => 3, "month_name" => "Mar", "albedo" => 0.2, "soiling_loss" => 2.0]);
monthlyFactors = {innerList};
je = JSON으로 Expr(EvalList(monthlyFactors));
쇼(예);
실제 문제는 JSL 목록 및 연관 배열 데이터 구조에 대한 올바른 API 호출과 변수 평가, 복사본 대 라이브 참조 반환 등의 동작을 아는 것입니다. JSON 개체를 빌드하는 데 사용된다는 사실은 부수적입니다.
하지만 JMP의 REST API에 대한 새로운 지원을 통해 더 자세한 종단간 예제 세션을 갖는 것이 도움이 될 것이라는 점에 동의합니다. 이 제안을 문서 팀에 단독으로 전달하겠습니다. 제안해 주셔서 감사합니다!
Re: 동적 JSON 개체를 만드는 방법아.
그림에서 텍스트로 이동하는 전사 오류가 있었습니다.
Re: 동적 JSON 개체를 만드는 방법API에 대한 링크가 있습니까? 유효한 JSON을 나열하지 않은 것 같습니다.
적어도 Chrome의 JSON Editor는 그렇게 생각하지 않습니다.
감사해요Re: 동적 JSON 개체를 만드는 방법@nascif_jmp 그리고 @bryan_boone ,
응답해 주셔서 감사합니다. 귀하의 답변이 도움이 되었지만 몇 가지 질문이 있습니다.
1. JSL에서 허용되는 JSON 배열 형식의 예를 친절하게 제공해 주시겠습니까? 이것이 허용됩니까?

2. 스크립팅 인덱스 또는 스크립팅 가이드가 JSON 배열의 부분이나 nasicf가 친절하게 보여준 것처럼 빈 JSON 객체를 정의하는 방법을 다루고 있습니까?
ㅏ. 있다면, 나는 그것을 읽고 싶습니다
비. 아니오라면 어디에서도 찾을 수 없기 때문에 문서에 추가하도록 요청할 것입니다.
Re: 동적 JSON 개체를 만드는 방법목록에 대한 JavaScript/Python 구문("[]")은 JSL에서 동일한 의미가 아닙니다. JSL에서 '[]'는 비어 있음을 나타냅니다. 행렬, 유효한 JSON 표현이 없기 때문에 '?' 결과에 연산자. 저것 '?' 연산자는 서비스에서 응답으로 받는 원격 오류 메시지의 원인이 되어야 합니다.
대신 '{}'를 사용하여 빈 목록을 나타내거나 '[=>]'를 사용하여 빈 연관 배열/사전을 나타내야 합니다.
항상 중간 결과를 캡처하고 가정을 테스트하기 위해 show()를 사용하여 검사하는 것이 좋습니다.
http://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast
Re: 동적 JSON 개체를 만드는 방법"동적" JSON을 빌드할 수 있지만 하위 요소가 생성된 후 연관 배열에 하위 요소를 추가해야 합니다.
이것이 바로 JSL이 작동하는 방식입니다.
이것은 내가 의미하는 바를 보여줍니다.
aa = [=>];
list = {};
aa["a jsl list"] = list;
Insert Into(list, "Hello World");
Insert Into(list, 2019);
show(list);
show(aa);
출력:
list = {"Hello World", 2019};
aa = ["a jsl list" => {}];
이 동안:
aa = [=>];
list = {};
Insert Into(list, "Hello World");
Insert Into(list, 2019);
aa["a jsl list"] = list;
show(list);
show(aa);
출력:
list = {"Hello World", 2019};
aa = ["a jsl list" => {"Hello World", 2019}];
Re: 동적 JSON 개체를 만드는 방법나는 이 스레드를 전혀 따르지 않았지만 연관 배열의 사용에 대한 언급과 기본 결과에 대한 혼란으로 보이는 것을 보았습니다. 그것이 내가 대답하는 유일한 측면입니다.
보다 돕다 > 서적 > 스크립팅 가이드 목차에서 연관 배열을 검색합니다.
기본값
기본값은 연관 배열에 존재하지 않는 키 값을 결정합니다. 만약 너라면
연관 배열에 존재하지 않는 키에 액세스하려고 하면 오류가 발생합니다. 당신이 정의하는 경우
연관 배열의 기본값으로 존재하지 않는 키에 액세스하면
수행원:
• 연관 배열에 키를 추가합니다.
• 새 키에 기본값을 할당합니다.
• 오류 대신 새 키의 (기본값) 값을 반환합니다.
키에 값을 할당하지 않고 문자열 목록에서 연관 배열을 구성하는 경우
그러면 키에 값 1이 할당됩니다. 연관 배열의 기본값은 0으로 설정됩니다.
기본값을 설정하려면:
cary = Associative Array();
cary << Set Default Value( "Cary, NC" );<BR />
연관 배열에 대해 설정된 기본값이 있는지 확인하려면 <
기본값 메시지.
cary << Get Default Value;
"Cary, NC"
기본값이 없으면 Empty()가 반환됩니다.
기본값 설정 메시지 외에도 리터럴 생성자에서 기본값을 설정할 수 있습니다.
키 없이 =>value를 사용합니다.
counts = ["a" => 10,
"b" => 3,
=> 0]; // default value of 0
counts["c"] += 1;
Show( counts );
counts = ["a" => 10, "b" => 3, "c" => 1, => 0];
첫 번째 줄에서 기본값은 0으로 설정됩니다. 두 번째 줄에는 "c" 키가 없습니다.
카운트. 출력에서 "c" 키는 기본값 0으로 생성된 다음 증가합니다.
1까지.
참고: 키 값이 기본값이면 모든 키가 반환되므로 키가 삭제됩니다.
기본값.
Re: 동적 JSON 개체를 만드는 방법@Mark_Bailey ,
"[ ]"를 사용하면 오류가 발생합니다.
Re: 동적 JSON 개체를 만드는 방법연관 배열의 쌍에 값이 없는 키를 참조할 때 반환하려는 모든 결과를 정의할 수 있습니다.
Re: 동적 JSON 개체를 만드는 방법먼저 그림을 복사하는 것뿐만 아니라 JSL 코드 기능을 사용하여 사람들이 코드를 복사하여 붙여넣을 수 있도록 하는 것이 좋습니다.
사용자 이름에 벡터를 제공하려고 한다고 가정합니까?
여전히 이상한 연산자 작업을 수행하고 있지만 여전히 httpbin과 충돌하지 않습니다.행렬 대신 목록을 사용한 경우 원하는 대로 수행하는 것 같습니다.
Names default to here(1);
MyAA = Associative Array();
MyAA["username"] = {1, 2, 3};
MyAA["address"] = "12345";
request = New HTTP Request(
url( "http://httpbin.org/post" ),
Method( "POST" ),
JSON( AsJSONExpr(myAA) )
);
data = request << Send;
도움이 되나요?
Re: 동적 JSON 개체를 만드는 방법@vince_faller ,
따라서 문제는 다음에서 비롯됩니다.

연관 배열에 값이 없는 키가 있는 경우 As JSON Expr()을 사용하면 제대로 구문 분석할 수 없는 이상한 연산자(?)로 변환되어 오류가 발생합니다. 제 경우에는 Associative Array에서 키를 삭제했는데 제대로 작동했지만 이러한 매개변수를 전달하는 올바른 방법이 무엇인지 궁금합니다.
Re: 동적 JSON 개체를 만드는 방법@vince_faller ,
매개 변수 중 일부는 여기에서 공유할 수 없는 항목이므로 비공개 메시지로 보내 드렸습니다. 하드 코딩된 예제와 As JSON Expr()이 동일한 매개 변수를 가지고 있다는 메시지에서 볼 수 있습니다. 값은 동적이지만 이전에 표시된 대로 오류가 발생합니다.
Re: 동적 JSON 개체를 만드는 방법AS JSON Expr()이 하드코딩된 것과 동일한지 확인했습니까?
JSON 개체를 빌드하는 것이 작동하는 것 같습니다.
Names default to here(1);
MyAA = Associative Array();
MyAA["username"] = "bob" ;
MyAA["address"] = "12345" ;
myAA["aa"] = associative array();
myAA["aa"]["thing1"] = 14;
myAA["aa"]["thing2"] = 28;
show( As JSON Expr(myAA));