È possibile modificare la serializzazione predefinita di C# poco per documentDb? La proprietà id, ad esempio, sembra essere richiesta per essere minuscola, ma la serializzazione predefinita della proprietà Id è maiuscola. Idealmente vorremmo che tutte le proprietà di JSON iniziassero con caratteri minuscoli. L'unico modo che abbiamo trovato finora è quello di decorare le proprietà con [JsonProperty (PropertyName = "id")] ma non è molto elegante.Serializzazione personalizzata di C# poco per DocumentDb
risposta
Ecco un paio di modi per ottenere minuscole o in cammello caso nel documento DocumentDB:
Usa
[JsonProperty(PropertyName = "id")]
come lei ha ricordato.Modificare la proprietà C# nel POCO in lettere minuscole.
avere il vostro POCO estendono
Microsoft.Azure.Documents.Document
dal DocumentDB .NET Library, che ha una proprietà Id (che credo utilizza[JsonProperty(PropertyName = "id")]
dietro le quinte).Invece di utilizzare il serializzatore predefinito, è possibile utilizzare la libreria Json.NET per la serializzazione utilizzando il suo resolver di tipo cammello. Mats Karlsson ha un buon post sul blog su questo qui: http://www.matskarlsson.se/blog/serialize-net-objects-as-camelcase-json
Edit: impostazioni serializzatore JSON è supportato nella DocumentDB .NET SDK 1.16.0+. https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet
Ciao aliuy, La domanda non è su come serializzare in caml-case usando Json.NET ma piuttosto come cambiare il serializzatore predefinito per documentDb. –
Ah, mi dispiace - rivisto la mia risposta! –
Mentre ero in grado di modificare la serializzazione predefinita in Json.NET (impostando JsonConvert.DefaultSettings) e salvare i nomi delle proprietà in caso cammello, la query non funzionava. Immagino che DocumentDb usi il confronto case-sensitive sui nomi di proprietà. Quindi in una query obj.Id == document.id, gli ID non corrisponderanno. –
Attualmente non è possibile modificare il serializzatore predefinito di DocumentDB, tuttavia è possibile serializzare utilizzando la propria libreria o JSON.NET e memorizzare la stringa JSON alla raccolta facendo:
await client.CreateDocumentAsync(collectionLink, Resource.LoadFrom<Document>(stream));
dove torrente un flusso verso la stringa json (può essere da un file o da una stringa in memoria, ecc.). Potete trovare maggiori informazioni sul internet archive's edition of my blog post, che used to reside here
Edit: impostazioni serializzatore JSON è supportato nella DocumentDB .NET SDK 1.16.0+. https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet
link è rotto :( –
@CarlosG.risolto –
Anche se il client supporta le impostazioni di serializzazione personalizzate, il provider linq sembra ignorarlo. –
- 1. Utilizzo di protobuf e POCO in C++
- 2. Edizione di serializzazione campo personalizzata GWT
- 3. C++ - boost :: qualsiasi serializzazione
- 4. Prestazioni di serializzazione C++
- 5. Impaginazione in C# contro DocumentDB senza Skip
- 6. Jackson serializzazione personalizzata in Spring 3 MVC
- 7. Uso corretto di Poco C++ JSON per dati di analisi
- 8. POCO: Come caricare l'immagine su webser usando poco in C++
- 9. Serializzazione json personalizzata di classi di case strutturate scala
- 10. È possibile utilizzare il polimorfismo/ereditarietà nel driver C# DocumentDb
- 11. Serializzazione binaria/de-serializzazione in C++ e C#
- 12. C# Serializzazione di classi nidificate
- 13. serializzazione Json.NET personalizzata di un tipo enum con annotazione dati
- 14. Come aggiungere attributi per Serializzazione C# XML
- 15. C# per JSON serializzazione utilizzando JSON.Net
- 16. serializzazione C++ più veloce?
- 17. C++ Boost serializzazione serializzazione di classi derivate templated
- 18. Serializzazione Xml in C#
- 19. Sintassi C++ per classe di eccezione personalizzata
- 20. serializzazione XML + Namespace (C#)
- 21. C# serializzazione/Eredità
- 22. Azure DocumentDB Decimal Truncation
- 23. DocumentDB: Elimina un documento per ID
- 24. DocumentDB Sostituisci non funzionante
- 25. Azure DocumentDb vs RavenDb
- 26. DocumentDB TransientFaultHandling Best Practice
- 27. Autenticazione proxy nella libreria POCO Net C++
- 28. C# POCO modello T4, generare interfacce?
- 29. Server TCP multithread con librerie POCO C++
- 30. Inserimento di documenti json in DocumentDB
La possibilità di impostare le impostazioni di JsonSerialization sull'API DocumentDB SDK è attualmente in fase di sviluppo da parte del team di Azure, quindi dovrebbe essere disponibile in futuro in alcuni punti: https://feedback.azure.com/forums/263030 -documentdb/suggerimenti/6422364-allow-me-to-set-jsonserializersetting – abrown