簡體   English   中英

將 JSON 字符串轉換為 Typescript 中的 JAVASCRIPT 對象

[英]convert JSON string to JAVASCRIPT Object in Typescript

大家好,我有兩個 JSON 字符串

[{desc:"john",number:"22",designation:"manager"}]

另一個 JSON 字符串

[{名稱:“小溪”,ID:“198”,角色:“開發人員”}]

所以我需要用第二個 JSON 文件映射第一個 JSON 文件

我的輸出應該是這樣的

[{desc:"creek",number:"198",designation:"developer"}]

所以在這里我想在將我們的 JSON 字符串轉換為 JAVASCRIPT 對象時,我們只需要替換屬性..

誰能幫我這個謝謝...

您有兩種不同的類型,我們可以為它們定義打字稿類型。

type FormatOne = {
  desc: string;
  number: string;
  designation: string;
}

type FormatTwo = {
  name: string;
  ID: string;
  role: string;
}

我們可以創建一個函數來從一種類型映射到另一種類型。

const twoToOne = ({name, ID, role}: FormatTwo): FormatOne => ({
  desc: name,
  number: ID,
  designation: role,
})

從字符串解析 JSON 時,您必須使用as來斷言類型,因為 typescript 不知道類型是什么。 我們可以說它將是一個混合了兩種類型的數組。

const str = '[{desc:"john",number:"22",designation:"manager"}, {name:"creek",ID:"198",role:"developer"}]';
const arr = JSON.parse(str) as Array<FormatOne | FormatTwo>;

如果你知道你有一個所有FormatTwo的數組,那么重新格式化它就像調用array.map(twoToOne)一樣簡單。

當你有一個混合數組時,我們需要檢查每個元素並有條件地調用轉換器。 我們'name' in item使用'name' in item作為類型保護來查看item是否為FormatTwo

const fixed = arr.map( item => 
  ('name' in item) ? twoToOne(item) : item
);

這個fixed新數組具有FormatOne[]類型,不需要斷言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM