2010-02-10 25 views
15

में किसी JSON ऑब्जेक्ट में कनवर्ट करें कोई भी जानता है कि jQuery के साथ छेड़छाड़ करने के लिए किसी भी JSON ऑब्जेक्ट में मानों की HTML तालिका को कैसे परिवर्तित किया जाए?एक HTML तालिका डेटा को jQuery

+1

"टेबल" से आपका क्या मतलब है? डाटाबेस टेबल? एचटीएमएल टेबल? – Sampson

+0

संभव डुप्लिकेट [jQuery का उपयोग करके HTML तालिका के माध्यम से Iterate, तालिका में डेटा को जेएसओएन में परिवर्तित करना] (http://stackoverflow.com/questions/1872485/iterate-through-html-table-using-jquery-converting-the- डेटा-इन-द-टेबल-इन-जेएस) –

उत्तर

25

एक HTML तालिका? एक 2-डी सरणी में सभी <td> सामग्री की तरह?

var tbl = $('table#whatever tr').map(function() { 
    return $(this).find('td').map(function() { 
    return $(this).html(); 
    }).get(); 
}).get(); 

तो बस चालू करने के लिए है कि JSON स्ट्रिंग में $ .json (या जो भी आप चाहते हैं पुस्तकालय) का उपयोग करें।

संपादित — फिर से लिखा सरणी प्रोटोटाइप से देशी (shim here) .map() उपयोग करने के लिए:

var tbl = $('table#whatever tr').get().map(function(row) { 
    return $(row).find('td').get().map(function(cell) { 
    return $(cell).html(); 
    }); 
}); 

jQuery .map() समारोह परिणाम सरणी में लौटे सरणियों सपाट की "सुविधा" है। यही है, यदि कॉलबैक फ़ंक्शन एक मान देता है जो स्वयं एक सरणी है, तो उस लौटाए गए सरणी के बजाय .map() परिणाम का मान बन गया है, इसके तत्व प्रत्येक परिणाम में जोड़े गए हैं।

यह मूल jQuery संस्करण का उपयोग करने के लिए काम करता है और केवल लौटाए गए मानों के आस-पास एक अतिरिक्त सरणी लपेटता है।

+0

यहां मजाक यह हो सकता है कि यह वास्तव में काम नहीं करता है। JQuery '.map()' विधि में (काफी संदिग्ध, यदि आप मुझसे पूछें) फ़्लैटिंग लौटाई सरणी की सुविधा है। यह मूल दृष्टिकोण मूल '.map()' के साथ काम करेगा जो नए जावास्क्रिप्ट वातावरण एरे प्रोटोटाइप के माध्यम से प्रदान करते हैं। – Pointy

+0

यह बहुत उपयोगी है !! बीटीडब्ल्यू @ पॉइंट, क्या होगा अगर बहुत टीडी में एक वर्ग हो, उदाहरण के लिए <टीडी कक्षा = 'संदेश'> बाह बाह बाह ..., क्या मैं इसे जेसन में बदल सकता हूं, इसलिए वर्ग का नाम उस नाम का नाम बन गया है जैसे ==> "संदेश": "बाह बाह बाह ...", बहुत बहुत धन्यवाद –

+0

@VirtualJasper हाँ आप निश्चित रूप से ऐसा कर सकते हैं, लेकिन आप चाहते हैं प्रत्येक सेल के लिए एक वस्तु बनाने की जरूरत है। मैं एक नया सवाल पूछूंगा। – Pointy

14

मुझे कॉलम को अनदेखा करने, मूल्यों को ओवरराइड करने और नेस्टेड टेबल द्वारा भ्रमित होने की क्षमता को छोड़कर एक ही चीज़ की आवश्यकता थी।

https://github.com/lightswitch05/table-to-json

सभी आप प्लगइन jQuery का उपयोग कर अपने तालिका का चयन करें और फोन करना है:

var table = $('#example-table').tableToJSON(); 

यहाँ का एक डेमो है मैं एक jQuery प्लगइन तालिका करने के लिए json लेखन समाप्त हो गया

http://jsfiddle.net/Crw2C/173/

+0

खराब बात यह है कि, यदि कक्ष में कोई HTML टैग है, तो इसे खाली स्ट्रिंग के साथ बदल दिया जाएगा। –

+0

@JerryLiang एक विकल्प 'allowHTML' है जो एचटीएमएल टैग – lightswitch05

+0

@ रोशनीविच 05 को अपने जेएसफ़ाइल में संरक्षित करने के लिए एक विकल्प है यदि टेबल में केवल चयनित मूल्य प्राप्त करने के तरीके से ड्रॉपडाउन होता है ... (मेरे मामले में सेनारियो जैसा आपने कहा है ठीक है बेवकूफ लेकिन जेसन में राज्य (ड्रॉपडाउन) के लिए अधिक कॉलम पर मेरी तालिका में ड्रॉपडाउन.प्लज़ के लिए दिए गए सभी डेटा मेरी मदद करें ... धन्यवाद) –

16

आप निम्नलिखित स्थिति मतलब कार्य करें: कार्रवाई में यह?

को देखते हुए:

A1 B1 C1 ... 
A2 B2 C2 ... 
... 

आवश्यक:

{"1": ["A1", "B1", "C1", ...], 
"2": ["A2", "B2", "C2", ...], ...} 

तो निम्नलिखित समारोह जो अनुगामी बिना एक मान्य JSON-स्ट्रिंग समारोह बनाता का उपयोग "":

function html2json() { 
    var json = '{'; 
    var otArr = []; 
    var tbl2 = $('#dest_table tr').each(function(i) {   
     x = $(this).children(); 
     var itArr = []; 
     x.each(function() { 
     itArr.push('"' + $(this).text() + '"'); 
     }); 
     otArr.push('"' + i + '": [' + itArr.join(',') + ']'); 
    }) 
    json += otArr.join(",") + '}' 

    return json; 
} 
+0

का उपयोग करें सवाल 3 साल का है और इसका एक स्वीकार्य उत्तर है, आप इसका जवाब क्यों दे रहे हैं? – Jimmy

+13

ठीक है, कई लोगों को ओपी के रूप में एक ही समस्या में मिल जाएगा। @ जॉन का जवाब उनके लिए अतिरिक्त समाधान दे सकता है – didxga

+0

अच्छा शॉट, यह अद्भुत है। – Tugrul

-4
{ "0":"[ 
    ['Product','Available','Issue','With Store'], 
    ['GV Rs. 100/-','4461','0','226'], 
    ['PV RED','8','0','0'] 
    ]" 
} 
+0

इस जेसन के लिए क्या काम है – user6379621

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