2017-02-10 33 views
0

我有一個JSON對象是這樣的:獨立的鍵值對,並把它在另一個數組

{ 
    "name": { 
    "type": "string" 
    }, 
    "addresses": { 
    "type": [ 
     "Address" 
    ] 
    } 
} 

我要像這樣的數組:

[{ 
    "fieldName": "name", 
    "fieldType": "string" 
}, 
{ 
    "fieldName": "address", 
    "fieldType": "Array" 
}] 

我如何實現的呢?

+0

您有什麼具體的問題? –

+0

你可以解析字符串「名稱」的關鍵「名稱」,一切都會更容易 – iwaduarte

回答

1

怎麼是這樣的:

function convertFieldType(fieldType) { 
 
    if (Array.isArray(fieldType)) { 
 
    return "Array"; 
 
    } 
 

 
    return fieldType; 
 
} 
 

 
function getFieldTypes(definition) { 
 
    return Object.keys(definition).map(function(fieldName) { 
 
    return { 
 
     fieldName: fieldName, 
 
     fieldType: convertFieldType(definition[fieldName].type) 
 
    }; 
 
    }); 
 
} 
 

 
var def = { 
 
    "name": { 
 
    "type": "string" 
 
    }, 
 
    "addresses": { 
 
    "type": [ 
 
     "Address" 
 
    ] 
 
    } 
 
}; 
 

 
console.log(getFieldTypes(def));

1

您需要重新組織你的對象,僅此而已。

var obj={ 
    "name": { 
    "type": "string" 
    }, 
    "addresses": { 
    "type": [ 
     "Address" 
    ] 
    } 
}; 

var newJSON=[]; 

for(k in obj){ 
    var v=obj[k]; 
    newJSON.push({ 
     fieldName:k, 
     fieldType:Array.isArray(v.type)?"Array":v.type; 
    }); 
} 

console.log(newJSON); 
+0

我做了同樣的方式,但我用它,而不是三元運算符。 –

0

如果你想在類類型的對象的「類型」屬性,你可以試試下面的代碼

var inputData = { 
    "name": { 
    "type": "string" 
    }, 
    "addresses": { 
    "type": [ 
     "Address" 
    ] 
    } 
}; 
var finalArray = []; 
for (key in inputData) { 
    finalArray.push({ fieldName: key, fieldType: Object.prototype.toString.call(inputData[key].type).slice(8, -1) }); 
} 
console.log(finalArray); 

您可以查看以下鏈接與https://jsfiddle.net/Siddharth_Pandey/4d2u640w/

+1

我假設他想要'type'屬性的_value_如果它是一個字符串,或者'數組'如果它是一個數組。如果我將第一個類型更改爲'「number」,那麼您的代碼返回第一個類型的「String」。 – JLRishe

+0

他的問題不是那麼清楚,這就是爲什麼我在答覆中提到 「如果你想在類類型的‘類型’的對象的屬性,你可以試試下面的代碼」 –

+0

我認爲這是很明顯,'「類型」:「數字「'不應該給結果'」字符串「'。 – nnnnnn

相關問題