如何从分配给字符串对象的 json 消息中提取键值



我正在将带有属性的XML消息转换为JSON并分配给变量。现在,变量 x 具有转换后的 JSON 消息。现在我想从该变量中提取键值对 x(string) .

请检查以下详细信息。XML 消息是

<?xml version="1.0" encoding="UTF-8"?>
<OBJECT key="postorder" type="TEMP">
    <TEMP>
        <ROW order-version-id="1" 
             layout-type="2" 
             order-no="3" 
             order-action="4" 
             estimated-price="5" 
             orig-price="6" 
             quantity="7" 
             orig-quantity="8" 
             quantity-type="6" 
             trade-currency="7" 
             base-currency="8" 
             settlement-currency="9"/>
    </TEMP>
</OBJECT> 

我正在使用快速xml解析器进行转换,输出如下

{
   "OBJECT":{
      "key":"postorder",
      "type":"TEMP",
      "TEMP":{
         "ROW":{
            "order-version-id":"1",
            "layout-type":"2",
            "order-no":"3",
            "order-action":"4",
            "estimated-price":"5",
            "orig-price":"6",
            "quantity":"7",
            "orig-quantity":"8",
            "quantity-type":"6",
            "trade-currency":"7",
            "base-currency":"8",
            "settlement-currency":"9"
         }
      }
   }
}

并将其分配为var result = JSON.stringify(jsonObj);现在字符串类型的结果具有转换后的 JSON 消息。从结果中,我需要获取基础货币值

任何线索都值得赞赏。

没有进一步的例子,我不确定这是否是你真正想要的,但据我了解:

你有这个:

let x = '{k1: v1, k2: v2, k3: v3....}'

你想要这个:

let object = {k1: v1, k2: v2,...}

最快的方法是使用 JSON.parse 功能:

let x = '{k1: v1, k2: v2, k3: v3....}';
let object = JSON.parse(x);

编辑:在您的特定示例中,您不需要使用 JSON.stringify。您已经有一个 JSON 对象,可以像这样访问它:

let object = /*that parsed XML*/
let baseCurrency = object.OBJECT.TEMP.ROW['base-currency']; //this will give you the value as string

首先使用JSON.parse函数将字符串转换为 JSON 对象。

const object1 =JSON.parse(jsonstr) ;
console.log(Object.keys(object1));

Object.keys() 方法返回给定对象自己的属性名称的数组,其顺序与正常循环的顺序相同。

您可以使用

JSON.parse函数将字符串转换为 JSON 对象。

希望以下示例可以帮助您入门。

const x = '{"key1":"value1","key2":"value2"}';
const json = JSON.parse(x);
console.log(json.key1);
console.log(json.key2);

更新(基于相关更改)

从 fast-xml 解析器获得的结果是一个 JSON 对象。您无需使用 JSON.stringify 将其转换为字符串。可以直接使用该对象并获取base-currency值。

请参阅下面的代码。

const jsonObj = {
  "OBJECT": {
    "key": "postorder",
    "type": "TEMP",
    "TEMP": {
      "ROW": {
        "order-version-id": "1",
        "layout-type": "2",
        "order-no": "3",
        "order-action": "4",
        "estimated-price": "5",
        "orig-price": "6",
        "quantity": "7",
        "orig-quantity": "8",
        "quantity-type": "6",
        "trade-currency": "7",
        "base-currency": "8",
        "settlement-currency": "9"
      }
    }
  }
};
const baseCurrency = jsonObj.OBJECT.TEMP.ROW["base-currency"];
console.log(baseCurrency); // 8

最新更新