動的 JSON オブジェクトの作成方法全て、
JSL で動的 JSON オブジェクトを作成する方法を知りたいですか?
request = New HTTP Request(
url( "http://httpbin.org/post" ),
Method( "POST" ),
JSON( "\[{"username":"bob","address":"12345"}]\" )
);スクリプト インデックスの例を使用すると、ユーザー名をボブからマーク、アドレスを 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 呼び出しは期待どおりに機能します。

どんな助けでも大歓迎です。
Re: 動的 JSON オブジェクトの作成方法それはそれを段階的に構築するためのものでした.完全な「ハードコードされた」バージョンはちょうど
毎月の要因 = { {
[ "月" => 1, "月名" => "1月", "アルベド" => 0.2, "汚れ損失" => 2.0],
[ "month" => 2, "month_name" => "Feb", "albedo" => 0.2, "soiling_loss" => 2.0],
[ "月" => 3, "月名" => "3 月", "アルベド" => 0.2, "汚れ損失" => 2.0]
}};
je = As JSON Expr(monthlyFactors);
Show(je);
経験則として:
* JSON 配列は JSL リストにマップされます (行列やベクトルではありません。'[]' の類似性に注意してください)。
* JSON 辞書は JSL 連想配列にマップされます。
* 評価されていない変数参照をチェックします。
* データ構造を変更する呼び出しが実際にターゲット オブジェクトを変更するかどうかを確認します (変更されたコピーを返すのではなく)。
Re: 動的 JSON オブジェクトの作成方法また、JSON 形式の文字列を連結するだけで JSON を作成できることを忘れないでください。
リストや連想配列は必要ありません。
Re: 動的 JSON オブジェクトの作成方法JSON Editor の 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
}
]

Re: 動的 JSON オブジェクトの作成方法これはうまくいくようです。
innerList = {};
InsertInto(innerList, [ "month" => 1, "month_name" => "1月", "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]);
monthFactors = {innerList};
je = As JSON Expr(EvalList(monthlyFactors));
Show(je);
本当の問題は、JSL リストと連想配列のデータ構造に対する適切な API 呼び出しと、変数の評価、コピーとライブ参照の比較などに関するそれらの動作を知ることだと思います。 それらが JSON オブジェクトの作成に使用されているという事実は、付随的なものです。
そうは言っても、JMP からの REST API の新しいサポートにより、より詳細なエンド ツー エンドの例を使用したセッションが役立つことに同意します。 この提案は、私たちのドキュメント チームに単独で伝えます。 提案をありがとう!
Re: 動的 JSON オブジェクトの作成方法ああ。
画像からテキストへの転記エラーが発生しました。
Re: 動的 JSON オブジェクトの作成方法APIへのリンクはありますか? 有効な JSON をリストしたとは思いません。
少なくとも、Chrome の JSON エディターはそうではないと考えています。
ありがとうRe: 動的 JSON オブジェクトの作成方法@nascif_jmpと@ブライアン_ブーン、
ご回答ありがとうございます。 あなたの回答は私がどこかにたどり着くのに役立ちましたが、いくつか質問があります:
1. JSL で受け入れられている JSON 配列形式の例を教えてください。 これは受け入れられますか?

2. スクリプト インデックスまたはスクリプト ガイドは、JSON 配列の部分、または nasicf が親切に示したように空の JSON オブジェクトを定義する方法をカバーしていますか?
を。 もしそうなら、私はそれを読みたいです
b. いいえの場合、どこにも見つからなかったので、これをドキュメントに追加するように依頼します
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() が返されます。
Set Default Value メッセージに加えて、リテラル コンストラクターでデフォルト値を設定できます。
キーなしで =>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 に設定されています。 2 行目では、キー "c" が存在しません。
数えます。 出力では、キー「c」がデフォルト値 0 で作成され、インクリメントされます。
1によって。
注: キーの値がデフォルト値の場合、どのキーも返されるため、キーは削除されます。
デフォルト値。
Re: 動的 JSON オブジェクトの作成方法@マークベイリー、
"[ ]" を使用するとエラーになります。
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() を使用すると、適切に解析できないこの奇妙な演算子 (?) に変換され、エラーがスローされます。 私の場合、連想配列からキーを削除しただけで機能しましたが、そのようなパラメーターを渡す正しい方法を知りたいですか?
Re: 動的 JSON オブジェクトの作成方法@vince_faller 、
一部のパラメーターはここで共有できるものではないため、プライベート メッセージとして送信しました。 メッセージから、ハードコーディングされた例と 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));