2010-07-08 7 views
8

उदाहरण:मौजूदा JSON ऑब्जेक्ट के हिस्सों को संशोधित करने के लिए मैं Json.NET का सबसे अच्छा उपयोग कैसे कर सकता हूं?

मेरे पास निम्न JSON ऑब्जेक्ट है।

{"currentVersion" : "10.0", 
    "folders" : [], 
    "services" : [ 
    {"name" : "nyc", "type" : "MapServer"}, 
    {"name" : "philly", "type" : "MapServer"} 
    ] 
} 

मैं नाम विशेषता के मूल्य के आधार पर सेवा सरणी से एक या अधिक आइटम को निकालने में सक्षम होना चाहता हूं। उदाहरण के लिए, मैं नाम = "nyc" खोजना चाहता हूं और सरणी से निम्न ऑब्जेक्ट को हटा देना चाहता हूं।

{"name" : "nyc", "type" : "MapServer"} 

अंतिम परिणाम एक उद्देश्य यह है कि इस तरह दिखता है है:

{"currentVersion" : "10.0", 
    "folders" : [], 
    "services" : [ 
    {"name" : "philly", "type" : "MapServer"} 
    ] 
} 

मैं काफी आसानी से नई JSON वस्तु बनाने के लिए सक्षम किया गया है और मैं मौजूदा पढ़ सकते हैं। हालांकि, मैं मौजूदा JSON ऑब्जेक्ट को संशोधित करने का सबसे अच्छा तरीका निर्धारित करने में मुश्किल से निर्धारण कर रहा हूं। विशेष रूप से यह JSON ऑब्जेक्ट के भीतर विशिष्ट ऑब्जेक्ट्स के लिए पूछताछ से संबंधित है।

एक विधि है कि मैं खुलासा किया है (इस उदाहरण के लिए विशिष्ट) JSON कि मैं संशोधित करना चाहते हैं के कुछ भागों के पुनर्निर्माण और आवश्यक के रूप में टोकन को बदलने के लिए है। हालांकि, मुझे लगता है कि एक बेहतर तरीका है। यह कोड नीचे दिखाया गया है।

string json = @"{""currentVersion"" : ""10.0"", 
        ""folders"" : [], 
        ""services"" : [ 
         {""name"" : ""nyc"", ""type"" : ""MapServer""}, 
         {""name"" : ""philly"", ""type"" : ""MapServer""} 
        ] 
       }"; 

string[] keepList = new string[] { "nyc" }; 

JObject o = JObject.Parse(json); 
JArray services = (JArray)o["services"]; 
JArray newServices = new JArray(); 

foreach (JToken service in services) 
{ 
    foreach (string keeper in keepList) 
    { 
     if ((string)service["name"] == keeper) 
     { 
      newServices.Add(service); 
      break; 
     } 
    } 
} 

services.Replace(newServices); 

string output = o.ToString(); 

कैसे मैं सबसे अच्छा एक मौजूदा JSON ऑब्जेक्ट के कुछ हिस्सों को संशोधित करने के Json.NET उपयोग कर सकते हैं?

उत्तर

8

मैं क्या मूल प्रश्न में प्रदान किया गया था की तुलना में एक मौजूदा JSON संशोधित करने के लिए एक वैकल्पिक तरीका निर्धारित करने के लिए अभी तक है। यदि एक बेहतर तरीका सतह है तो मैं खुशी से इसे सही उत्तर के रूप में स्वीकार करूंगा।

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

string json = @"{""currentVersion"" : ""10.0"", 
        ""folders"" : [], 
        ""services"" : [ 
         {""name"" : ""nyc"", ""type"" : ""MapServer""}, 
         {""name"" : ""philly"", ""type"" : ""MapServer""} 
        ] 
       }"; 

string[] keepList = new string[] { "nyc" }; 

JObject o = JObject.Parse(json); 
JArray services = (JArray)o["services"]; 
JArray newServices = new JArray(); 

foreach (JToken service in services) 
{ 
    foreach (string keeper in keepList) 
    { 
     if ((string)service["name"] == keeper) 
     { 
      newServices.Add(service); 
      break; 
     } 
    } 
} 

services.Replace(newServices); 

string output = o.ToString(); 
संबंधित मुद्दे

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