2012-02-04 29 views
5

मैं जो लेकिन एक शब्दकोश json में धारावाहिक रूप में कुछ भी नहीं है, अब ग्राहक के पक्ष वेब सेवा से आ रही नीचे json डेटा मैं इस json की चाबी के माध्यम से पुनरावृति को यह वापस पार्स करने के लिए की जरूरत है शब्दकोश जावास्क्रिप्ट या jQueryपार्स json शब्दकोश

{ 
   "AboutToExpire": { 
      "Display": true, 
      "Message": "Several of your subscriptions are about to expire. <a id=\"lnkShowExpiringSubs\" href=\"#\">View subscriptions<\/a>" 
   }, 
   "Expired": { 
      "Display": true, 
      "Message": "Your McAfee WaveSecure - Tablet Edition subscription has expired and you’ve been without protection for 384 days. <a id=\"lnkNotificationRenewNow\" href=\"http://home.mcafee.com/root/campaign.aspx?cid=96035&pk=FAB37CF4-3680-4A87-A253-77E7D48BF6D7&affid=0\">Renew now<\/a>" 
   } 
} 
+0

आप कृपया यह (json डेटा) पठनीय पहले कर देगा ?? – diEcho

+1

[आपने क्या प्रयास किया है?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) इसके अलावा, आपका प्रश्न क्या है? – nfechner

उत्तर

5
var s = '{"AboutToExpire":{"Display":true,"Message":"Several of your subscriptions are about to expire. \u003ca id=\"lnkShowExpiringSubs\" href=\"#\"\u003eView subscriptions\u003c/a\u003e"},"Expired":{"Display":true,"Message":"Your McAfee WaveSecure - Tablet Edition subscription has expired and you’ve been without protection for 384 days. \u003ca id=\"lnkNotificationRenewNow\" href=\"http://home.mcafee.com/root/campaign.aspx?cid=96035&pk=FAB37CF4-3680-4A87-A253-77E7D48BF6D7&affid=0\"\u003eRenew now\u003c/a\u003e"}}'; 

var data = eval(s); // this will convert your json string to a javascript object 

for (var key in data) { 
    if (data.hasOwnProperty(key)) { // this will check if key is owned by data object and not by any of it's ancestors 
     alert(key+': '+data[key]); // this will show each key with it's value 
    } 
} 
+1

'eval' व्यापक दर्शकों द्वारा असुरक्षित समझा जाता है। @ shiplu.mokadd.im का जवाब सुरक्षित विकल्प है। eval के लिए – nonsensickle

+1

downvote, कृपया ध्यान दें कि यह बाह्य डेटा पर एक बुरा विचार है। – Jonathan

1

यह पार्स वापस का उपयोग कर के लिए? आप उस ऑब्जेक्ट के रूप में इसे फिर से चालू कर सकते हैं। jQuery के साथ

var myJSON = "{"AboutToExpire":{"Display":true,"Message":"Several of your subscriptions are about to expire. \u003ca id=\"lnkShowExpiringSubs\" href=\"#\"\u003eView subscriptions\u003c/a\u003e"},"Expired":{"Display":true,"Message":"Your McAfee WaveSecure - Tablet Edition subscription has expired and you’ve been without protection for 384 days. \u003ca id=\"lnkNotificationRenewNow\" href=\"http://home.mcafee.com/root/campaign.aspx?cid=96035&pk=FAB37CF4-3680-4A87-A253-77E7D48BF6D7&affid=0\"\u003eRenew now\u003c/a\u003e"}}" 

प्रत्येक() तुम सिर्फ कर सकते हैं:

आप एक बंद या कुछ और के माध्यम से एक चर के रूप में अपने JSON ऑब्जेक्ट परिभाषित, या उदाहरण के एक चर hardcoded बस के रूप में की खातिर कहो ... आईई इस तरह से फिर से शुरू करें।

$each(myJSON, function(x){document.print(myJSON.AboutToExpire[x].Message);`}); 
+0

मैं – almighty

+0

इसके अलावा myJSON.AboutToExpire आ रहा है कुंजी के लिए जाँच करें और उदाहरण के लिए कुछ हेरफेर करने के लिए करता है, तो कुंजी AboutToExpire या और कुछ मूल्य पर अन्य वर्ग के लिए अन्य कुंजियों मैं कुछ वर्ग लागू करने की आवश्यकता कुछ जो इस मामले में संदेश है की जरूरत है अच्छे समाधान – almighty

16

उपयोग JSON2.js

var obj = JSON.parse(data); 
for(var key in obj){ 
    if (obj.hasOwnProperty(key)){ 
     var value=obj[key]; 
     // work with key and value 
    } 
} 
+0

+1 के रूप में अपरिभाषित। लेकिन जब तक आप बहुत पुराने ब्राउज़र नहीं देख रहे हैं, तब तक आपको JSON2.js को शामिल करने की आवश्यकता नहीं है। सभी मौजूदा ब्राउज़रों में पार्स() और स्ट्रिंग() को मूल रूप से समर्थित किया गया है। – diEcho

+1

अच्छा समाधान के लिए – techfoobar

+0

आपके द्वारा बदले जाने नहीं करना चाहिए 'अगर (obj.hasOwnProperty (key)) {' और 'के लिए (वर obj में महत्वपूर्ण) {' प्रदर्शन के कारणों के लिए? – Neolisk

संबंधित मुद्दे