2013-02-20 19 views
12
साथ शब्दकोश में

मैं प्रतिक्रिया पूर्णांक निम्नलिखित JSON परिणाम प्राप्त करते हैं:deserialize JSON DataContractJsonSerializer

{"result": { "":-41.41, "ABC":0.07, "XYZ":0.00, "Test":0.00 }} 

मैं deserializating के लिए निम्नलिखित वर्ग तैयार किया है:

[DataContract] 
public sealed class RpcResponse 
{ 
    [DataMember(Name = "result")] 
    public List<KeyValuePair<string, decimal>> Result { get; set; } 
} 

लेकिन जब मैं करने के लिए tring हूँ इसे DataContractJsonSerializer के साथ deserialize Result संपत्ति शून्य प्रविष्टियों के साथ समाप्त होता है। (ResultDictionary<string, decimal> के रूप में घोषित करते समय भी काम नहीं करता है)

क्या DataContractJsonSerializer के साथ ऐसा करने का कोई तरीका है?

उत्तर

0

आपकी JSON स्ट्रिंग किसी संपत्ति के साथ किसी ऑब्जेक्ट का प्रतिनिधित्व करती है परिणाम यह है कि यह 4 गुणों वाला एक ऑब्जेक्ट है: "", एबीसी, एक्सवाईजेड, और टेस्ट। परिणाम KeyValuePairs की एक सूची होने के लिए, JSON इस प्रकार दिखाई देगा:

{"result": [{ "":-41.41}, {"ABC":0.07}, {"XYZ":0.00}, {"Test":0.00 }] } 

ध्यान दें कि आप जावास्क्रिप्ट कोड में एक साहचर्य सरणी का उपयोग कर रहे हैं, यह है कि यह संपत्ति मूल्य के साथ एक वस्तु के रूप श्रृंखलाबद्ध किया जा रहा है जोड़े, वस्तुओं की एक सरणी के रूप में नहीं। यदि वह JSON स्ट्रिंग का स्रोत है, तो आपको उचित JSON प्राप्त करने के लिए अपने जेएस में एक सामान्य अनुक्रमित सरणी का उपयोग करने के लिए स्विच करने की आवश्यकता हो सकती है।

+0

मैं कहीं भी जावास्क्रिप्ट का उपयोग नहीं करता, और मैं परिणाम के प्रारूप को भी बदल नहीं सकता। – Regent

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