如何構建動態 JSON 對象全部,
我想知道如何在 JSL 中構建動態 JSON 對象?
request = New HTTP Request(
url( "http://httpbin.org/post" ),
Method( "POST" ),
JSON( "\[{"username":"bob","address":"12345"}]\" )
);使用腳本索引中的示例,如果我想將用戶名從 bob 更改為 mark 和地址從 12345 到 12346 並且我有 10 個這樣的調用,我更願意將其構建為外部動態對象。 我最初嘗試將其構建為關聯數組,然後使用 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 調用會按預期工作。

任何幫助表示讚賞。
回复:如何構建動態 JSON 對象那是為了逐步構建它,完整的“硬編碼”版本只是
每月因素 = { {
[“月”=> 1,“month_name”=>“一月”,“反照率”=> 0.2,“soiling_loss”=> 2.0],
[“月”=> 2,“month_name”=>“二月”,“反照率”=> 0.2,“soiling_loss”=> 2.0],
[“月”=> 3,“month_name”=>“三月”,“反照率”=> 0.2,“soiling_loss”=> 2.0]
}};
je = As JSON Expr(monthlyFactors);
顯示(je);
根據經驗:
* JSON 數組映射到 JSL 列表(不是矩陣或向量,注意 '[]' 相似性);
* JSON 字典映射到 JSL 關聯數組;
* 檢查非評估變量引用;
* 檢查數據結構修改調用是否真的改變了目標對象(而不是返回修改後的副本)。
回复:如何構建動態 JSON 對象並且不要忘記您可以通過連接 JSON 格式的字符串來創建 JSON。
不需要列表或關聯數組。
回复:如何構建動態 JSON 對象如果我使用 JSON 編輯器中的 chrome add 重寫它,我會看到一個關聯數組列表
[
{
"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
}
]

回复:如何構建動態 JSON 對象這似乎有效。
內部列表 = {};
InsertInto(innerList, [ "month" => 1, "month_name" => "Jan", "albedo" => 0.2, "soiling_loss" => 2.0]);
InsertInto(innerList, [ "month" => 2, "month_name" => "Feb", "albedo" => 0.2, "soiling_loss" => 2.0]);
InsertInto(innerList, [ "month" => 3, "month_name" => "Mar", "albedo" => 0.2, "soiling_loss" => 2.0]);
monthlyFactors = {innerList};
je = As JSON Expr(EvalList(monthlyFactors));
顯示(je);
我認為真正的問題是了解對 JSL 列表和關聯數組數據結構的正確 API 調用,以及它們在評估變量、返回副本與實時引用等方面的行為。 它們被用於構建 JSON 對像這一事實是偶然的。
話雖如此,隨著 JMP 對 REST API 的新支持,我同意與更詳細的端到端示例進行會話會有所幫助。 我將把這個建議單獨傳遞給我們的文檔團隊。 感謝您的建議!
回复:如何構建動態 JSON 對象啊。
我在從圖片到文本的過程中遇到了轉錄錯誤。
回复:如何構建動態 JSON 對象你有 API 的鏈接嗎? 我認為您沒有列出有效的 JSON。
至少 Chrome 中的 JSON 編輯器不這麼認為。
謝謝回复:如何構建動態 JSON 對象@nascif_jmp和@bryan_boone ,
謝謝你的回复。 您的回答幫助我取得了進展,但是我有幾個問題:
1. 你能提供一個 JSL 中可接受的 JSON 數組格式的例子嗎? 這被接受了嗎?

2. 腳本索引或腳本指南是否涵蓋了 JSON 數組的部分或如何定義一個空的 JSON 對象,如 nasicf 所顯示的那樣?
A。 如果是的話,我想讀一下
b. 如果沒有,我會要求將其添加到文檔中,因為我無法在任何地方找到它
回复:如何構建動態 JSON 對象列表 ("[]") 的 JavaScript/Python 語法在 JSL 中的含義不同。 在 JSL 中,'[]' 表示空矩陣,它沒有有效的 JSON 表示,這就是為什麼你得到 '?'結果中的運算符。 那 '?'操作員反過來必須是導致您作為服務響應收到的遠程錯誤消息的原因。
您應該改用“{}”來指示空列表,或使用“[=>]”來指示空關聯數組/字典。
捕獲中間結果並使用 show() 檢查它們以測試您的假設始終是一個好習慣。
http://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast
回复:如何構建動態 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}];
回复:如何構建動態 JSON 對象我根本沒有關注這個線程,但看到提到了關聯數組的使用以及對默認結果的混淆。 這是我要答复的唯一方面。
看幫助>圖書>腳本指南並在目錄中搜索關聯數組:
默認值
默認值確定關聯數組中不存在的鍵的值。 如果你
嘗試訪問關聯數組中不存在的鍵,將導致錯誤。 如果你定義一個
關聯數組的默認值,訪問不存在的鍵會導致
下列的:
• 將鍵添加到關聯數組
• 將默認值分配給新鍵
• 返回新鍵的(默認)值而不是錯誤
如果你從一個字符串列表構造一個關聯數組而不給鍵賦值,
然後為鍵分配值 1。 關聯數組的默認值設置為 0。
要設置默認值:
cary = Associative Array();
cary << Set Default Value( "Cary, NC" );<BR />
要確定是否為關聯數組設置了默認值,請使用 <
默認值消息。
cary << Get Default Value;
"Cary, NC"
如果沒有默認值,則返回 Empty()。
除了 Set Default 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”不存在於
計數。 在輸出中,使用默認值 0 創建鍵“c”,然後遞增
1.
注意:如果一個鍵的值是默認值,那麼該鍵將被刪除,因為任何鍵都會返回
默認值。
回复:如何構建動態 JSON 對象@馬克貝利,
當我使用 "[ ]" 時,會導致錯誤。
回复:如何構建動態 JSON 對象您可以定義在引用關聯數組中一對沒有值的鍵時要返回的任何結果。
回复:如何構建動態 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;
這有幫助嗎?
回复:如何構建動態 JSON 對象@vince_faller ,
所以問題源於此:

如果關聯數組有一個沒有值的鍵,那麼在使用 As JSON Expr() 時,它會被轉換為這個奇怪的運算符(?),這不是可以正確解析的東西,這反過來會引發錯誤。 在我的例子中,我只是從我的關聯數組中刪除了鍵並且它起作用了,但是我很想知道傳遞這樣一個參數的正確方法是什麼?
回复:如何構建動態 JSON 對象@vince_faller ,
由於有些參數我不能在這里分享,所以我把它作為私人消息發送給你。 您將從消息中看到,硬編碼示例和 As JSON Expr() 具有相同的參數,值是動態的,但它會導致錯誤,如我之前所示。
回复:如何構建動態 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));