新規投稿
フォローする

JSON.stringifyでの文字列配列の扱いについて

お世話になっております。

GaroonのHTMLポートレットでKintone REST APIのrecords.jsonを実行しようとしています。
リクエストパラメータはいったんオブジェクトとして作成し、JSON.stringifyで文字列変換してから
送信する仕様で作成中です。

送信結果が不正なJSON文字列エラーになったため、送信データを確認したところ、
パラメータfields(文字列の配列)が、意図しない結果に文字列変換されていました。

元のオブジェクト・・ {app:30, fields:["作成者"], query:"$id="}
期待した文字列・・・ '{"app":30,"fields":["作成者"], "query":"$id=1"}'
変換結果文字列・・・ '{"app":30,"fields":"[\"作成者\"]","query":"$id=1"}'

同じオブジェクトとstringify処理を書いたPCローカル上のHTMLファイルをブラウザで開くと、
fieldsの部分も、上記の期待した文字列に変換されています。

同一のオブジェクトを渡したJSON.stringifyの実行結果が、なぜ実行環境によって変わるのか?
HTMLポートレット実行環境で期待した結果を得るにはどうすればいいか? という疑問が解決できないでいます。

同じような事例に遭われた方がおられましたら、どのような方法で解決したのか教えていただきたく、お願いします。

0

2件のコメント

Avatar
Asami

確かに、おっしゃる通りの挙動になっていますね。
Garoonの製品が使っているPrototype.jsの影響みたいです。
配列に対してJSON.stringifyを行うと、余計なクォーテーションが入ってしまうようです。

[参考情報]
json.stringify と prototype の喧嘩
https://doruby.jp/users/red/entries/_javascript_


JSONの解決策ではなく申し訳ないのですが、
Garoonのポートレットにkintoneの情報を表示する(records.json利用)ということでしたら下記のTipsが参考になりそうです。

ガルーンポータル活用 Tips #2 「社員紹介ポータル」
https://developer.cybozu.io/hc/ja/articles/210356326

0
Avatar
前田

Asami様

ご確認ありがとうございました。

JSONの構造が比較的固定されているため、stringifyに代わる関数を自作することにします。

0
ログインしてコメントを残してください。