私はJavaScriptを初めて使用しますが、これが可能かどうかはわかりませんが、基本的にオブジェクトを取得し、それを形式の文字列の配列に変換したいと思います。 array[0] = 'prop1=value1'
この背後にある理由は、ユーザーにk = vのペアのリストをフォームに入力してもらい、後でjson blob内のオブジェクトとして作成することです。キー値cslからjsonオブジェクトに移動するのは簡単でしたが、今度は別の方法に戻る必要があります(ajax呼び出しでJSONを受け取り、空のフォームに入力したい)。 JavaScriptでこれは可能ですか?そうでない場合は、適切な回避策を提供してください。
サンプルコード;
デバッガーのオブジェクト。
Object
private_key: "private-key"
public_key: "public-key"
それを変換する必要があります。
"private_key=private-key,public_key=public-key"
基本的に私はこのようなものが必要です(擬似コード)
var outputString = '';
foreach (prop in obj)
{
outputString = outputString + prop.tostring() + '=' + prop.value + ',';
}
あなたはおそらく次の線に沿って何かを探しています
var obj = {value1: 'prop1', value2: 'prop2', value3: 'prop3'};
var arr = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
arr.Push(key + '=' + obj[key]);
}
};
var result = arr.join(',');
alert(result);
値が文字列の場合は正常に機能することに注意してください。複雑なオブジェクトの場合は、さらにコードを追加する必要があります。
または、単に jQuery.param を使用することもできます。これは、複雑なタイプであっても(コンマではなく&
文字を区切り文字として使用しますが)必要なことを行います。
var object = {
private_key: "private-key",
public_key: "public-key"
};
var array = [];
for (var prop in object)
array.Push(prop + "=" + object[prop]);
return array.join(','); // "private_key=private-key,public_key=public-key"
順序が保証されていないことに注意してください。
ES6では、Object.entries({object1:1,object2:2});
を使用できます。結果は次のとおりです。[["object1",1],["object2",2]]
var array = [];
for (k in o)
{
if (o.hasOwnProperty(k))
{
array.Push(k+"="+o[k]);
}
}
その後、最終文字列の配列をjoin
できます。
obj = {
private_key: "private-key",
public_key: "public-key"
}
str = JSON.stringify(obj).replace(/[{}]/g, '').replace(/"/g, '').replace(/:/g, '=');
console.log("Using JSON.stringify:\n", str);
str = Object.keys(obj).map((key) => `${key}=${obj[key]}`).join(',')
console.log("Using ES6 keys/map:\n", str);
str = jQuery.param(obj).replace(/&/g,',');
console.log("Using jQuery.param:\n", str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>