JSON कुंजी का नाम कैसे बदलें



(4)

मेरे पास निम्न सामग्री के साथ एक JSON ऑब्जेक्ट है:

[
  {
    "_id":"5078c3a803ff4197dc81fbfb",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 1"
  },
  {
    "_id":"5078c3a803ff4197dc81fbfc",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 2"
  }
]

मैं "_id" कुंजी को "आईडी" में बदलना चाहता हूं, इसलिए यह बन जाएगा

[
  {
    "id":"5078c3a803ff4197dc81fbfb",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 1"
  },
  {
    "id":"5078c3a803ff4197dc81fbfc",
    "email":"[email protected]",
    "image":"some_image_url",
    "name":"Name 2"
  }
]

मैं जावास्क्रिप्ट, jQuery या रूबी, रेल के साथ ऐसा कैसे करूं?

धन्यवाद।

https://ffff65535.com


इस मामले में स्ट्रिंग प्रतिस्थापन का उपयोग करना सबसे आसान होगा। जेएसओएन को सीरियलाइज करना अच्छा काम नहीं करेगा क्योंकि _id ऑब्जेक्ट का प्रॉपर्टी नेम बन जाएगा और संपत्ति का नाम बदलना कोई आसान काम नहीं है (कम से कम अधिकांश लैंगुग में नहीं, यह जावास्क्रिप्ट में इतना बुरा नहीं है)। इसके बजाए बस करो;

jsonString = jsonString.replace("\"_id\":", "\"id\":");

जैसा कि द्वारा वर्णित है, सबसे आसान समाधान यह है कि JSON की बजाय स्ट्रिंग के रूप में इसे संसाधित करना,

var json = [{"_id":"5078c3a803ff4197dc81fbfb","email":"[email protected]","image":"some_image_url","name":"Name 1"},{"_id":"5078c3a803ff4197dc81fbfc","email":"[email protected]","image":"some_image_url","name":"Name 2"}];
    
json = JSON.parse(JSON.stringify(json).split('"_id":').join('"id":'));

document.write(JSON.stringify(json));

यह दिए गए JSON डेटा को स्ट्रिंग करने और "_id" को "id" में बदलने के बाद कनवर्ट करने के बाद इसे आवश्यक JSON प्रारूप में परिवर्तित कर देगा। लेकिन मैंने split उपयोग split और बदले में join , क्योंकि प्रतिस्थापन केवल स्ट्रिंग की पहली घटना को replace करेगा।


यदि आप इसे गतिशील रूप से करना चाहते हैं, उदाहरण के लिए, आपके पास एक सरणी है जिसे आप JSON ऑब्जेक्ट की कुंजी के रूप में लागू करना चाहते हैं:

आपका ऐरे इस तरह होगा:

var keys = ["id", "name","Address","Phone"] // The array size should be same as JSON Object keys size

अब आपके पास एक JSON ऐरे है:

var jArray = [
  {
    "_id": 1,
    "_name": "Asna",
    "Address": "NY",
    "Phone": 123
  },
  {
    "_id": 2,
    "_name": "Euphoria",
    "Address": "Monaco",
    "Phone": 124
  },
  {
    "_id": 3,
    "_name": "Ahmed",
    "Address": "Mumbai",
    "Phone": 125
  }
]

$.each(jArray ,function(pos,obj){
    var counter = 0;
    $.each(obj,function(key,value){
        jArray [pos][keys[counter]] = value;
        delete jArray [pos][key];
        counter++;
    })  
})

आपका परिणामी JSON ऐरे इस प्रकार होगा:

[
  {
    "id": 1,
    "name": "Asna",
    "Address": "NY",
    "Phone": 123
  },
  {
    "id": 2,
    "name": "Euphoria",
    "Address": "Monaco",
    "Phone": 124
  },
  {
    "id": 3,
    "name": "Ahmed",
    "Address": "Mumbai",
    "Phone": 125
  }
]

यदि आप कुछ कुंजी की सभी घटनाओं का नाम बदलना चाहते हैं तो आप जी विकल्प के साथ रेगेक्स का उपयोग कर सकते हैं। उदाहरण के लिए:

var json = [{"_id":"1","email":"[email protected]","image":"some_image_url","name":"Name 1"},{"_id":"2","email":"[email protected]","image":"some_image_url","name":"Name 2"}];

str = JSON.stringify(json);

अब हमारे पास स्ट्रिंग प्रारूप में जेएसएन है।

जी विकल्प के साथ regex का उपयोग कर "_id" से "id" की सभी घटनाओं को बदलें:

str = str.replace(/\"_id\":/g, "\"id\":");

और जेसन प्रारूप पर लौटें:

json = JSON.parse(str);

अब हमारे पास वांछित कुंजी नाम के साथ हमारा जेसन है।





json