JavaScript श्रृंखला भेजें JSON या XML का उपयोग कर? कैसे यह XML को चालू करने के लिए?

वोट
2

ठीक है, मेरी स्थिति ऐसी है: मैं सर्वर जहां एक PHP स्क्रिप्ट ने MySQL डेटाबेस में अलग-अलग सरणी प्रविष्टियों बना रहेगा करने के लिए एक JavaScript की सामग्री को भेजने की जरूरत है। मैं jQuery उपयोग नहीं कर रहा है, लेकिन मैं के बारे में मेरी परियोजना में प्रोटोटाइप ढांचे को एकीकृत करने के हूँ।

मैं इकट्ठा कि जे एस सरणी आसानी से प्रोटोटाइप द्वारा प्रदान की toJSON () पद्धति का उपयोग करके JSON में बदला जा सकता। मैं तो मेरी स्क्रिप्ट जो किसी भी तरह डी-JSONise हैं सरणी के लिए इस पोस्ट में और डीबी में मूल्यों डाल सकता है।

लेकिन क्या मैं भी में JSON डेटा-विनिमय प्रारूप का उपयोग नहीं है, लेकिन एक्सएमएल में जे एस सरणी है, जो बहुत आसानी से SimpleXML PHP एक्सटेंशन से पार्स किया जा सकता परिवर्तित दिलचस्पी है (अपने आप को कुछ विकास समय सर्वर साइड बचाने के लिए)। मेरा प्रश्न (रों) इस प्रकार हैं: मैं JSON या XML के लिए जाना चाहिए? और मैं एक्सएमएल में जे एस सरणी कैसे बदल सकता है? (वहाँ एक toXML () विधि मौजूद है toJSON () प्रोटोटाइप में है?)

मैं बहुत इसी तरह के सवाल की महान विविधता के बारे में पता कर रहा हूँ, लेकिन वे सभी अन्य तरीके से चारों ओर इस सवाल पूछने के लिए ... जे एस सरणियों को JSON परिवर्तित करने लगते हैं, और कई jQuery से संबंधित हैं। तो मेरी मदद कृपया, भले ही इस संभावित डुप्लिकेट है और आप इस बाकी कुछ जगह जवाब हो सकता है।

19/04/2009 को 15:28
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
1

ToJSON () का उपयोग कर के बाद, आप एक्सएमएल के लिए JSON कन्वर्ट करने के लिए, से इस्तेमाल कर सकते हैं goessner.net ( स्रोत फ़ाइल ):

/*  This work is licensed under Creative Commons GNU LGPL License.

    License: http://creativecommons.org/licenses/LGPL/2.1/
    Version: 0.9
    Author:  Stefan Goessner/2006
    Web:     http://goessner.net/ 
*/
function json2xml(o, tab) {
   var toXml = function(v, name, ind) {
      var xml = "";
      if (v instanceof Array) {
         for (var i=0, n=v.length; i<n; i++)
            xml += ind + toXml(v[i], name, ind+"\t") + "\n";
      }
      else if (typeof(v) == "object") {
         var hasChild = false;
         xml += ind + "<" + name;
         for (var m in v) {
            if (m.charAt(0) == "@")
               xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\"";
            else
               hasChild = true;
         }
         xml += hasChild ? ">" : "/>";
         if (hasChild) {
            for (var m in v) {
               if (m == "#text")
                  xml += v[m];
               else if (m == "#cdata")
                  xml += "<![CDATA[" + v[m] + "]]>";
               else if (m.charAt(0) != "@")
                  xml += toXml(v[m], m, ind+"\t");
            }
            xml += (xml.charAt(xml.length-1)=="\n"?ind:"") + "</" + name + ">";
         }
      }
      else {
         xml += ind + "<" + name + ">" + v.toString() +  "</" + name + ">";
      }
      return xml;
   }, xml="";
   for (var m in o)
      xml += toXml(o[m], m, "");
   return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, "");
}

जिसके अनुसार, मैं व्यक्तिगत रूप से JSON के लिए जाना चाहते हैं।

19/04/2009 को 15:45
का स्रोत उपयोगकर्ता

वोट
4

आप php_json विस्तार के तरीकों की कोशिश की? उन्हें का उपयोग करके आप एक PHP वस्तु में JSON ऑब्जेक्ट चालू करने के लिए सक्षम हो जाएगा।

वहां से आप आप जो कुछ भी करना चाहते हैं कर सकते हैं। एक XML स्ट्रिंग SimpleXML साथ प्रक्रिया या डेटास्टोर में जारी रहती है।

19/04/2009 को 16:05
का स्रोत उपयोगकर्ता

वोट
2

आप सही मायने में विकास समय बचा सकते हैं अगर आप php के अंतर्निहित का उपयोग json_decode

19/04/2009 को 16:34
का स्रोत उपयोगकर्ता

वोट
0

मैं एक देशी क्वेरी स्ट्रिंग जो सभी रूपांतरण प्रक्रिया को समाप्त होगा का उपयोग कर सुझाव देते हैं। यहाँ कोड है जो उचित रूपांतरण करना होगा है:

/**
 * This function serializes the object to a standart URI query string which can directly interpreted by PHP.
 * 
 * @param {String} [format] The desired format for the output. Not needed for most usages.
 * @return {String} The URI query string.
  */
Object.prototype.toQueryString=function(format, encodeURI)
{
    if (typeof format!='string')
        format='%s';
    var result='';
    for (var paramName in this) 
    {
        if (this.constructor==Array && isNaN(parseInt(paramName)) || !this.hasOwnProperty(paramName))
            continue;

        if (this[paramName].constructor==Object || this[paramName].constructor==Array)
            result += '&' + this[paramName].toQueryString(format.format(paramName) + '[%s]', encodeURI);
        else
            result += '&' + format.format(paramName) + '=' + ((encodeURI!==false)?encodeURIComponent(this[paramName]):this[paramName]);
    }
    return result.substr(1);
};

कुछ Object.prototype का उपयोग कर पसंद न करें। आप उनमें से एक हैं, तो आप एक अलग समारोह easly के रूप में सेवा करने के लिए समारोह बदल सकते हैं। अगर मदद की जरूरत है, बस मुझे दस्तक;)

20/04/2009 को 08:30
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more