2015-10-12 8 views
9

Json.NET bir dize doğrudan bir nesne seri hale? Ne tipik yapılır dize şöyle bir json doğrudan nesneyi dönüştürmek için geçerli:bir JObject için yerine nasıl bir Json.NET bir <code>JObject</code> örneğine bir nesne doğrudan seri olabilir

string jsonSTRINGResult = JsonConvert.SerializeObject(someObj); 

biri olabilir sonra aşağıdaki geri JObject olarak serisi kaldırılmaya:

JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult); 

Yani görünüyor iş, ama bu şekilde bir çift performans isabeti (serileştirmek ve sonra serileştirmek) gibi görünüyor. SerializeObject içten bir şekilde ulaşılabilir bir JObject kullanıyor mu? Ya da sadece bir JObject doğrudan seri hale getirmek için bir yol var mı?

+1

Neden yerli türü/sınıfı üzerinde kodunuzda bir JObject çalışmak ister ki? Kısacası –

+0

http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm – Eser

+0

, bu Json.Net ben yapmak istediğim bazı şeyler yapmamı sağlayan, tüm zor seri hale şeyler dikkat çekmek için izin verir json olmayacak nihai serileştirme sonucu. Eğer bilmek istiyorsanız (bu belirli bir problemle alakasız olsa da), XML'e, XML alt öğeleri yerine XML alt öğeleri yerine, öznitelikler için kullanılabilecek şekilde serileştirmek istiyorum. belki bazı diğer özelleştirmeler. –

cevap

1

@Eser önerdiği JObject rota dizi olmayan CLR nesneler için sadece çalışacağını unutmayın ait FromObject statik yöntemini kullanabilirsiniz. Eğer JObject için bir Array nesnesi dönüştürme deneyin eğer aşağıda istisna ile sonuçlanır:

'System.InvalidCastException' Newtonsoft.Json.dll içinde

ek bilgiler oluştu tür bir işlenmeyen istisna: nesne artığını açılamıyor tip 'Newtonsoft.Json.Linq.JArray' arasında 'Newtonsoft.Json.Linq.JObject' yazın.

JArray jArray = JArray.FromObject(someArrayObject); 

bu kod parçacığını kullanacak şekilde kod dosyasının en üstünde using Newtonsoft.Json.Linq; eklemeyi unutmayın:

Yani, durumda, o zaman JArray kullanarak olmalıdır yerine aşağıda gösterilen bir dizi nesnesidir.

+0

Mükemmel kafalar, teşekkürler! –