एक JValue
केवल तार, ints, बूलियन्स, दिनांक और तरह तरह साधारण मान हो सकते हैं। इसमें एक जटिल वस्तु नहीं हो सकती है। मुझे लगता है कि तुम क्या वास्तव में चाहते हैं यह है:
List<User> list = LoadUsers();
JObject json = new JObject();
json["users"] = JToken.FromObject(list);
ऊपर JObjects
उपयोगकर्ताओं का प्रतिनिधित्व करने का एक JArray
में User
वस्तुओं की सूची में परिवर्तित कर देंगे, तो नए JObject
पर users
संपत्ति है कि निर्दिष्ट करते हैं। आप Type
json["users"]
की संपत्ति की जांच करके इसकी पुष्टि कर सकते हैं और देख सकते हैं कि यह Array
है।
इसके विपरीत, यदि आप json["users"] = new JValue(JsonConvert.SerializeObject(list))
करते हैं जैसा कि इस प्रश्न के उत्तर में अब दिया गया है (अब हटा दिया गया है), तो संभवतः आपको वह परिणाम नहीं मिलेगा जिसे आप ढूंढ रहे हैं। वह दृष्टिकोण उपयोगकर्ताओं की सूची को स्ट्रिंग में क्रमबद्ध करेगा, उसमें से एक सरल JValue
बनाएं, और पर users
संपत्ति पर JValue
असाइन करें। यदि आप Type
json["users"]
की संपत्ति की जांच करते हैं, तो आप देखेंगे कि यह String
है। इसका अर्थ यह है कि, यदि आप बाद में को जेएसओएन में json.ToString()
का उपयोग करके कनवर्ट करने का प्रयास करते हैं, तो आपको जेएसओएन की बजाय डबल-सीरियलाइज्ड आउटपुट मिलेगा।
यहाँ अंतर दर्शाने के लिए एक छोटी डेमो है:
class Program
{
static void Main(string[] args)
{
List<User> list = new List<User>
{
new User { Id = 1, Username = "john.smith" },
new User { Id = 5, Username = "steve.martin" }
};
JObject json = new JObject();
json["users"] = JToken.FromObject(list);
Console.WriteLine("First approach (" + json["users"].Type + "):");
Console.WriteLine();
Console.WriteLine(json.ToString(Formatting.Indented));
Console.WriteLine();
Console.WriteLine(new string('-', 30));
Console.WriteLine();
json["users"] = new JValue(JsonConvert.SerializeObject(list));
Console.WriteLine("Second approach (" + json["users"].Type + "):");
Console.WriteLine();
Console.WriteLine(json.ToString(Formatting.Indented));
}
class User
{
public int Id { get; set; }
public string Username { get; set; }
}
}
आउटपुट:
First approach (Array):
{
"users": [
{
"Id": 1,
"Username": "john.smith"
},
{
"Id": 5,
"Username": "steve.martin"
}
]
}
------------------------------
Second approach (String):
{
"users": "[{\"Id\":1,\"Username\":\"john.smith\"},{\"Id\":5,\"Username\":\"steve.martin\"}]"
}
स्रोत
2013-12-25 06:15:07
काम किया! धन्यवाद – s0nica
धन्यवाद। यह वही था जो मैंने पूरे दिन बिताए जाने की कोशिश की थी। – Trebor
सही, यह उत्तर के रूप में क्यों चिह्नित नहीं है? – killernerd