TL; DR: आपको एक जेबीप्रोजेक्ट को एक जोबजेक्ट में जोड़ना चाहिए। सरल। इंडेक्स क्वेरी JValue लौटाती है, इसलिए यह पता लगाएं कि JProperty कैसे प्राप्त करें?
स्वीकृत उत्तर प्रश्न का उत्तर नहीं दे रहा है जैसा कि लगता है। क्या होगा यदि मैं एक विशिष्ट के बाद विशेष रूप से एक जेपीरोपरि जोड़ना चाहता हूं? सबसे पहले, उन शब्दावली से शुरू करें जो वास्तव में मेरे सिर पर काम करती थीं।
- जेटोकन = अन्य सभी प्रकार की माँ। यह एक JValue, JProperty, JArray, या जोबजेक्ट हो सकता है। यह पार्सिंग तंत्र को एक मॉड्यूलर डिजाइन प्रदान करना है।
- JValue = किसी भी Json मूल्य प्रकार (स्ट्रिंग, इंट, बूलियन)।
- JProperty = किसी भी JValue या JContainer (नीचे देखें) को एक नाम (पहचानकर्ता) के साथ जोड़ा गया । उदाहरण के लिए
"name":"value"।
- JContainer = सभी प्रकारों की माता जिसमें अन्य प्रकार (जोबजेक्ट, जेवल्यू) शामिल हैं।
- जोबजेक्ट = एक जेकोनटेनर प्रकार जो JProperties का संग्रह रखता है
- JArray = एक JContainer प्रकार जो एक संग्रह JValue या JContainer रखता है।
अब, जब आप इंडेक्स का उपयोग करके Json आइटम को क्वेरी करते हैं [], आपको पहचानकर्ता के बिना JToken मिल रहा है, जो JContainer या JValue (कास्टिंग की आवश्यकता है) हो सकता है, लेकिन आप इसके बाद कुछ भी नहीं जोड़ सकते, क्योंकि यह केवल एक मूल्य है। आप इसे स्वयं बदल सकते हैं, अधिक गहरे मूल्यों को क्वेरी कर सकते हैं, लेकिन उदाहरण के लिए इसके बाद आप कुछ भी नहीं जोड़ सकते।
आप वास्तव में क्या प्राप्त करना चाहते हैं वह सम्पूर्ण संपत्ति है, और फिर वांछित के बाद दूसरी संपत्ति जोड़ें। इसके लिए, आप उपयोग करते हैं JOjbect.Property("name"), और फिर अपनी इच्छा की एक और JProperty बनाते हैं और फिर इस उपयोग AddAfterSelfविधि के बाद इसे जोड़ते हैं । आप तब कर रहे हैं।
अधिक जानकारी के लिए: http://www.newtonsoft.com/json/help/html/ModifyJson.htm
यह वह कोड है जिसे मैंने संशोधित किया है।
public class Program
{
public static void Main()
{
try
{
string jsonText = @"
{
""food"": {
""fruit"": {
""apple"": {
""colour"": ""red"",
""size"": ""small""
},
""orange"": {
""colour"": ""orange"",
""size"": ""large""
}
}
}
}";
var foodJsonObj = JObject.Parse(jsonText);
var bananaJson = JObject.Parse(@"{ ""banana"" : { ""colour"": ""yellow"", ""size"": ""medium""}}");
var fruitJObject = foodJsonObj["food"]["fruit"] as JObject;
fruitJObject.Property("orange").AddAfterSelf(new JProperty("banana", fruitJObject));
Console.WriteLine(foodJsonObj.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.GetType().Name + ": " + ex.Message);
}
}
}
JObject.Parseअंतिम पंक्ति में 'JToken.Parse' (या 'JToken.FromObject') के बजाय का उपयोग करें । जैसा कि यह सरल वस्तुओं जैसे स्ट्रिंग के लिए भी काम करता है।