如何在JavaScript中将JSON对象转换为字符串和数字数组

如何在JavaScript中将JSON对象转换为字符串和数字数组,javascript,arrays,json,Javascript,Arrays,Json,从GET请求到API端点,我有以下响应: { "success": true, "data": { "categories": [ { "id": 1, "label": "Default", "url": "default", "num_of_subs": 0 }, { "id": 2,

从GET请求到API端点,我有以下响应:

{ 
  "success": true,
  "data": {
    "categories": [
        {
            "id": 1,
            "label": "Default",
            "url": "default",
            "num_of_subs": 0
        },
        {
            "id": 2,
            "label": "Pet Grooming",
            "url": "pet-grooming",
            "num_of_subs": 2
        },   
    ],
    }
}
以下是获取代码:

const sendRegisterData = fetch('https://sg.cuzzey.com/api/listings/categories', {
        method: 'GET',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
    })
        .then((response) => response.text())
        .then((responseText) => {
            var response_final = JSON.parse(responseText);
            if (response_final.success) {
                this.setState({
                    categories: response_final.data.categories,
                })
            }
        })
我想做的是从类别中获取数据,并将它们打印为字符串和数字(id和num作为数字,label和url作为字符串)。以下是我所做的:

const category_options = this.state.categories.map(category => {
        return [<Text key={category.id} style={styles.smallTextBox}> {category.id} {'\n'}</Text>,
        <Text key={category.label} style={styles.smallTextBox}>  {category.label} {'\n'}</Text>,
        <Text key={category.num_of_subs} style={styles.smallTextBox}>  {category.num_of_subs} {'\n'}</Text>]
    })

<ModalDropdown options={category_options} onSelect={(idx, label) => this.getCategory(idx, label)}>
                <Text style={styles.smallTextBox}> {this.state.selected_category} </Text>
</ModalDropdown>
当我打印出category_id、selected_category和numSubs时,值是正确的。但是,它们是对象类型,而不是字符串/数字。我想操纵这些值,但不知道如何将它们转换为字符串/数字。我尝试过使用String()、Number()、parseInt()、JSON.parse()和toString(),但似乎都不起作用,因为当我打印出值的类型时,它们都会导致“object”


我可以问一下有没有办法解决这个问题吗?

您的代码不起作用,因为您没有遍历对象数组。您只是返回数组的对象。这就是您无法提取该值的原因

var项目=[{
“成功”:没错,
“数据”:{
“类别”:[{
“id”:1,
“标签”:“默认值”,
“url”:“默认值”,
“子节点的数量”:0
},
{
“id”:2,
“标签”:“宠物美容”,
“url”:“宠物美容”,
“SUB的数量”:2
},
],
}
}]
设置状态=[];
var分类=items.map(x=>x.data.categories);
catagories=catagories.reduceRight(x=>x.cantact([]);
getCategory=(值)=>{
for(让值的值){
setState.push({
类别id:value.id,
所选类别:value.label,
numSubs:value.num\u of_subs
})
}
}
var输出=getCategory(类别)
var results=setState.filter(x=>x.numSubs>0)

控制台日志(结果)
您能提供一个您想要的输出示例吗?我希望能够执行以下操作:
如果(this.state.numSubs>0){render_something()other{render_something_other()}
目前numSubs不是一个数字,所以我不能用它来与任何东西进行比较。我能问一下这行内容是什么吗
catagories=catagories.reduceRight(x=>x.cantact([]);
do?更具体地说,
cantact([])
做什么?@Nguyen Dung它删除了外部数组。如果你觉得有用,你能选择答案吗
getCategory = (idx, value) => {
    this.setState({ category_id: value[0], selected_category: value[1], numSubs: value[2] })
}