如何修复 json 代码作为对象对象进入 html 下拉列表

How to fix json code coming into html dropdown as object Object

我有一个 InDesign 脚本的 HTML 下拉列表,当我从文件中拉出 JSON 时,它作为对象返回。我不知道我做错了什么。

我在这里尝试了很多答案,但 none 正在使用我的代码。

我的HTML:

<h4>Design Tools</h4>

    <select id="swatchNumber" onchange="swatchIndex()" class="custom-select"></select>

我的 jsx:

function swatchIndex() {  
    var doc, swatches, json, n, l, swatch;  
    doc = app.activeDocument;  
    swatches = doc.swatches;  
    json = [];  
    l = swatches.length;  
    for (n = 0; n < l; n++) {  
        swatch = swatches[n];  
        json[n] = '"' + n + '": {' +  
            '"name": "' + swatch.name + '"}' 
    }  
    // prepare the JSON as a string  
    json = '{' + json.join(',') + '}';  
    return json;  
}

我的javascript:

var callBack = function (result) {
    try {
        var swatchesConv = JSON.parse(result);

        var select = document.createElement('SELECT');
        select.name="swatchNumber";
        select.id="swatchNumber";
        document.body.appendChild(select);

        Object.keys(swatchesConv).forEach(function(result){
        document.getElementById('swatchNumber').innerHTML +='<option value="'+result+'">'+swatchesConv[result]+'</option>'
        })

        alert(result);

    } catch (e) { alert(e.message); }
//         alert("Wrong");
}
csInterface.evalScript('swatchIndex()', callBack);

弹出到我的警报中的实际 JSON(结果): {“0”: {“name”: “None”}, “1”: {“name”: “注册”), “2”: {“name”: “Paper”}, “3” : {“名字”: “黑色”}}

当我加载应用程序时,我收到弹出 JSON 的警报,但下拉列表显示正确的数量,但每个索引只显示对象 Object

因为 swatchesConv

{
 “0”: {“name”: “None”}, 
 “1”: {“name”: “Registration”), 
 “2”: {“name”: “Paper”}, 
 “3”: {“name”: “Black”}
}

Object.keys(swatchesConv).forEach中的result是键,swatchesConv[result]的值是键的对象。因此,对于键 0 它将是 {“name”: “None”}.

要显示名称,您必须使用:

'<option value="'+result+'">'+swatchesConv[result].name+'</option>'

'<option value="'+result+'">'+swatchesConv[result]['name']+'</option>'

创建 select 的选项时。