簡體   English   中英

JSON數據格式

[英]JSON Data format

對JSON數據以及如何使用JavaScript不太熟悉。這就是我正在嘗試創建的兩個JS變量

var json={};
var json1={};

我有一些循環來迭代數據和循環像

for(firstLoop){
   key=outerKey;
   for(innerLook){
   innerKey=innerkey;
     for(lastloop){
       jsonValues= create values in a java variable
     }
      json[innerKey]=jsonValues;
    }

    json1[outerKey]=JSON.stringify(json);
  }

這樣做我得到以下輸出

Required: "{"Center":"radio_Required_Center_0,radio_Required_Center_1,","Left":"radio_Required_Left_0,"}"

這不是一個有效的JSON format.My想法ID創建一個外鍵說Required和比內一個在我的情況下, CenterLeft

這樣我就可以相對於鍵Center迭代每個值(我可以基於'來中斷字符串)

我不確定如何創建正確的結構,我也不想在服務器端輕松地完成它。 任何解決方案或提示都將真正有用。

編輯

var data= JSON.stringify(json1);

提供以下輸出

{"Required":"{\"Center\":\"radio_Required_Center_0,radio_Required_Center_1,\",\"Left\":\"radio_Required_Left_0,\"}"} 

這是有效的JSON數據,現在我需要根據JSON中的數據執行一些代碼,這是我的要求

  1. 提取外鍵(必填,也可以有其他鍵)。
  2. 獲取CenterLeft下的所有值
  3. 根據從第2步獲取的值創建數組(基於“,”分割)。
  4. 循環從步驟3獲得的值並執行邏輯。

我真正的挑戰是在第2和第3步,在這里我需要獲取鍵及其關聯的值和那些鍵,而不是預定義的鍵,因此我無法根據那里的名稱來訪問它們。

我正在考慮一種無需硬編碼鍵名並執行我的邏輯即可獲取鍵及其值的方法。 這種方法是否可行?

嘗試jsonlint.com來驗證您的JSON

這是有效的:

{
    "Center": "radio_Required_Center_0,radio_Required_Center_1,",
    "Left": "radio_Required_Left_0,"
}

這是有效的太:

{
    "Required": {
        "Center": "radio_Required_Center_0,radio_Required_Center_1,",
        "Left": "radio_Required_Left_0,"
    }
}

這不是:

Required: {
    "Center": "radio_Required_Center_0,radio_Required_Center_1,",
    "Left": "radio_Required_Left_0,"
}

使用JSON.stringify()是將javascript對象轉換為JSON字符串格式的正確方法。 但是,如果要將其放入變量中,則應首先執行此操作,然后在最后一步中將其轉換為JSON字符串。

var output = { "Required": yourpreviousjsonvar },
    jsonString = JSON.strinify(output);

編輯:

如果我理解正確的話,您首先需要處理數據,甚至可能不需要JSON字符串。 (=>如果您已經有了一個字符串,則需要首先對其進行解析。請使用JSON.parse(yourjsonstring)進行解析)

  1. 提取外鍵(必填,也可以有其他鍵)。
  2. 獲取中心和左鍵下的所有值
  3. 根據從第2步獲取的值創建數組(基於“,”分割)。
  4. 循環從步驟3獲得的值並執行邏輯。

將其作為變量:

var a = {
    "Required": {
        "Center": "radio_Required_Center_0,radio_Required_Center_1,",
        "Left": "radio_Required_Left_0,"
    }
}
// step 1
console.log(a.Required);
// step 2
console.log(a.Required.Center);
console.log(a.Required.Left);
// step 3
var center = a.Required.Center.split(',');
var left = a.Required.Left.split(',');
// step 4
for(var i = 0; i<center.length; i++){
    console.log("doing somthing with", center[i]);
}

這是一個小提琴 =>使用Chrome / safari / Opera的developertools並檢查控制台以檢查輸出。 或使用Firebug(在Firefox中)或IE9或更高版本(F12)。

如果您使用的是Javascript的現代版本,則它內置了JSON函數。

var jsonString = JSON.stringify(jsobject);

...將JS對象轉換為JSON字符串。

(請參閱https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify

var jsOject = JSON.parse(jsomString);

...向另一個方向轉換。

(請參閱https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/parse

唯一需要擔心的問題是,如果使用的是舊版本的瀏覽器-例如,較舊版本的IE,則無需擔心。 但是,在這種情況下,您可以加載像這樣的 polyfill庫, 庫將為您實現上述語法。

使用原生Javascript toSource:

var obj= new Object();
var obj1= new Object();

for(firstLoop){
   key=outerKey;
   for(innerLook){
   innerKey=innerkey;
     for(lastloop){
       jsonValues= create values in a java variable
     }
      obj.innerKey=jsonValues;
    }

    obj1.outerKey=obj;
  }

  json = obj.toSource();
  json1 = obj1.toSource();

如果您只是嘗試組成一個大的JSON對象,則無需在將一個JSON對象添加到另一個JSON對象之前對其進行字符串化處理。因此, JSON.stringify(json)執行JSON.stringify(json)您還可以執行json1[outerKey]=json

for(firstLoop){
   key=outerKey;
   for(innerLook){
   innerKey=innerkey;
     for(lastloop){
       jsonValues= create values in a java variable
     }
      json[innerKey]=jsonValues;
    }

    json1[outerKey]=json;
  }

暫無
暫無

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

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