2012-06-07 10 views
62

मैं डी 3 सीख रहा हूं। डी 3 जेएस में certain ways of loading the data हैं। लेकिन उनमें से सभी एक HTTP प्राप्त करने लगते हैं। मेरे परिदृश्य में, मेरे पास स्ट्रिंग में पहले से ही जेसन डेटा है। मैं एक और http अनुरोध करने के बजाय इस स्ट्रिंग का उपयोग कैसे कर सकता हूं? मैंने इसके लिए दस्तावेज देखने की कोशिश की लेकिन मुझे कोई नहीं मिला।डी 3 जेएस - http के बिना लोडिंग जेसन

यह काम करता है:

d3.json("/path/flare.json", function(json) { 
    //rendering logic here 
} 

अब, अगर मेरे पास है:

//assume this json comes from a server (on SAME DOMAIN) 
var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}'; 

कैसे मैं पहले से ही d3 & गणना 'myjson' का उपयोग सर्वर के लिए एक async कॉल से बचने के? धन्यवाद।

+0

क्या आप ऑब्जेक्ट के साथ ऐसा करना चाहते हैं? साथ ही, आप एक सादा जावास्क्रिप्ट ऑब्जेक्ट के बजाय स्ट्रिंग के रूप में हार्ड-कोड क्यों करेंगे? – Pointy

+1

@Pointy सर्वर इसे प्रतिक्रिया में एक मॉडल विशेषता के रूप में देता है। तो मेरे पास स्ट्रिंग है। उदाहरण के लिए, जेसन मैं http://mbostock.github.com/d3/ex/bubble.html में कोड से मेल खाता हूं – Ravi

+0

में जो तर्क होता है वह भी देखें http://stackoverflow.com/questions/20940854/कैसे-से-लोड-डेटा-से-एक-आंतरिक-जेसन-सरणी-बजाय-बाहर-बाहरी-रेजर –

उत्तर

80

, बस के साथ

json = JSON.parse(myjson); 

आईई d3.json कॉल की जगह:

var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}'; 

// d3.json("/path/flare.json", function(json) { #delete this line 

    json = JSON.parse(myjson); //add this line 

    //rendering logic here 

//} #delete this line 

अद्यतन 09/2013

मूल कोड बदल गया है। तो VARNAME jsonroot होना चाहिए:

// d3.json("flare.json", function(error, root) { #delete this line 

    root = JSON.parse(myjson); //add this line 

    //rendering logic here 

//} #delete this line 
+1

उस भाग को मिला। क्या आप मुझे बता सकते हैं कि ग्राफ को प्रस्तुत करने के लिए इस पार्स किए गए 'जेसन' ऑब्जेक्ट का उपयोग कैसे करें (जीईटी रिक्वेस्ट किए बिना) http://mbostock.github.com/d3/ex/bubble.html उदाहरण * d3 का उपयोग करता है। जेसन ("../ डेटा/flare.json", फ़ंक्शन (जेसन) * जो http कॉल करता है। दस्तावेज़/उदाहरणों के लिए कोई भी पॉइंटर्स भी मदद करेगा। धन्यवाद। – Ravi

+6

@Ravi 'json = JSON.parse (myjson); 'और लाइन '33' हटाएं। इसे आजमाएं –

+0

इसे आजमाया। पूरी तरह से काम किया! अब मैं देख रहा हूं कि क्या हो रहा है ... धन्यवाद !! – Ravi

2

इस उदाहरण के अनुसार:

http://phrogz.net/JS/d3-playground/#StockPrice_HTML

यहाँ वे चर $ डेटा के भीतर ग्राफ डेटा भंडारण कर रहे हैं, और .data के माध्यम से इसे स्थापित करने ($ डेटा) समारोह।

मैं इस विधि को जो भी ग्राफ आप उपयोग कर रहा हूं, उस पर लागू करूंगा।

+0

यह काम कर सकता है; उनके यहां एक समान उदाहरण है: https://github.com/mbostock/d3/wiki/Selections#wiki-data – Adrian

2

chumkiu से जवाब मेरे लिए महान काम किया लेकिन तोड़ मरोड़ के एक जोड़े की जरूरत - वैकल्पिक रूप से d3 बबल चार्ट के नवीनतम संस्करण में, आप बल्कि json से जड़ परिभाषित करने की आवश्यकता के रूप में में

root = JSON.parse(myjson); 

,, आप पाठ्यक्रम के शेष कोड में "जड़" के साथ "रूट" को प्रतिस्थापित कर सकता है। :-)

स्थानीय डेटा सेट का उपयोग करने वाले डी 3 नोड-लिंक पेड़ों के बारे में प्रश्नों के साथ इस उत्तर में आने वाले किसी भी व्यक्ति के लिए, यह उत्तर मेरे लिए बहुत अच्छा काम करता है - इस पृष्ठ पर योगदानकर्ताओं के लिए बहुत धन्यवाद।