Qualche idea su come farlo? Se non è possibile, cos'è una buona libreria JSON per C#?Utilizzo di System.Json per progetti non Silverlight?
risposta
Json.NET è una grande libreria .NET json. Suports LINQ, lettura/scrittura e conversione di oggetti da e verso JSON.
Se siete solo in cerca di JSON codifica/decodifica, v'è una libreria ufficiale estensione System.Web da Microsoft che lo fa, le probabilità sono probabilmente avete già questa assemblea (System.Web.Extensions):
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
esempio:
using System;
using System.Web.Script.Serialization;
class App
{
static void Main(string[] args = null)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
String sJson = "{\"Name\": \"Your name\"}";
DesJson json = jss.Deserialize<DesJson>(sJson);
Console.WriteLine(json.Name);
}
}
class DesJson {
public string Name {get; set;}
}
Ecco un metodo extenstion di serializzare qualsiasi istanza di oggetto di JSON:
public static class GenericExtensions
{
public static string ToJsonString<T>(this T input)
{
string json;
DataContractJsonSerializer ser = new DataContractJsonSerializer(input.GetType());
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, input);
json = Encoding.Default.GetString(ms.ToArray());
}
return json;
}
}
È necessario aggiungere un riferimento a System.ServiceModel.Web per utilizzare DataContractSerializer.
Scott Guthrie bloggato su questo
System.Json
è ora disponibile in progetti non Silverlight tramite NuGet (sistema di gestione dei pacchetti di Net) ed è, auspicabilmente, sta per essere rilasciato come parte della struttura di base in vNext. Il pacchetto NuGet è denominato JsonValue.
Immaginiamo che abbiamo la seguente JSON nella variabile stringa json
:
[{"a":"foo","b":"bar"},{"a":"another foo","b":"another bar"}]
Possiamo ottenere scrivere il valore "un altro bar" per la console utilizzando il seguente codice:
using System.Json;
dynamic jsonObj = JsonValue.Parse(json);
var node = jsonObj[1].b;
System.Console.WriteLine(node.Value);
Il pacchetto 'System.Json' è stato interrotto. Puoi trovare le classi appropriate nel framework stesso. –
Il proprietario non ha elencato questo pacchetto :( – Tito
@PatrickHofman: che versione intendi? L'ultima versione quasi stabile era https://www.nuget.org/packages/System.Json ma ora lo hanno anche deprecato. – Sebastian
altro l'opzione è di usare l'implementazione di Mono di System.Json, Sono stato in grado di eseguire il backport su C# 2.0 con alcune modifiche minori.
https://github.com/mono/mono/tree/master/mcs/class/System.Json/System.Json
- 1. System.Json namespace mancante da Windows Phone 7
- 2. Utilizzo di Eclipse per progetti Idea Intellij
- 3. Utilizzo di Maven per progetti R
- 4. Utilizzo di FJCore per la codifica di Silverlight WriteableBitmap
- 5. Utilizzo di Lightswitch, Silverlight e controlli personalizzati
- 6. Utilizzo di Emacs per progetti di grandi dimensioni
- 7. Utilizzo del modello di modulo per progetti di dimensioni maggiori
- 8. Utilizzo di Maven per i progetti C/C++
- 9. Utilizzo di url_per attraverso i progetti
- 10. Utilizzo di un singolo repository git per più progetti git
- 11. Utilizzo di Firebird in grandi progetti
- 12. Utilizzo di MergedDictionaries in generic.xaml in Silverlight 3
- 13. Utilizzo della GPU su Silverlight 5 per la matematica generica
- 14. Utilizzo dei controlli Silverlight nell'applicazione WPF
- 15. Git o Mercurial utilizzo in progetti Java
- 16. Utilizzo dello stesso database in più progetti
- 17. Silverlight per Mac e Silverlight è morto?
- 18. Utilizzo degli stessi moduli in più progetti
- 19. Animazione Silverlight non liscia
- 20. Progetti open source Rails con grande utilizzo di RSpec
- 21. Utilizzo di virtualenv con i progetti Django legacy
- 22. Cronometro per Silverlight?
- 23. La serializzazione Json DateTime è diversa in DataContractJsonSerializer e System.Json
- 24. Best practice di utilizzo dei componenti nei progetti jira
- 25. mercurial per progetti OS e svn per progetti Enterprise?
- 26. debug di Silverlight; non allegare processo
- 27. Utilizzo di TeamCity per la distribuzione dei progetti di report di SSRS 2008 R2
- 28. Utilizzo della virtualizzazione dell'interfaccia utente con ItemsControl in Silverlight
- 29. Proprietà attributo DisplayAttribute non funzionante in Silverlight
- 30. Dove posso ottenere "Silverlight Developer Runtime" per Silverlight 4?
ho guardato. Sembra troppo impresa per rispetto a System.Json. Sto principalmente cercando di usare Json per serializzare e deserializzare liste di strutture dati implicite (tuple, ecc.). Sto già lavorando per lo più su dati dinamici, quindi la sua capacità di serializzare oggetti fortemente tipizzati non è esattamente qualcosa di cui sono entusiasta, e il suo altro metodo è eccessivamente prolisso. – Patrick
Effettua dati dinamici proprio come System.Json e serializza/deserializza: JObject o = JObject.Parse ("{'first_name': 'Jeff', 'age': 30}"); Console.WriteLine (o ["first_name"]); –
Questo è meglio. Mi sono piaciuti molto gli operatori impliciti della classe JsonValue. Potrei semplicemente dargli un colpo. – Patrick