Un object Java simple sérialisé peut-il être désérialisé par C #?

En supposant que tous les champs d’une classe java soient des primitives java, si un tel object a été sérialisé, peut-il être désérialisé avec succès par C # en une instance d’une classe C # “équivalente”?

Est-ce que l’inverse est possible – C # to java?


Je me rends compte qu’il existe de nombreux formats de langue, tels que XML, qui pourraient être utilisés pour faire le travail. Je suis plus intéressé à savoir si l’utilisation des données sérialisées natives est faisable.

Les formats des stream sérialisés sont disponibles. Je pense que vous pouvez facilement écrire une classe pour parsingr le stream d’octets et créer la classe requirejse en C #.

Un article spécifiant le format sérialisé: http://www.javaworld.com/community/node/2915

Ceci n’est pas possible, du moins en n’utilisant pas les bibliothèques de sérialisation natives fournies par les deux frameworks, comme indiqué dans cet précédent article SO.

Si vous souhaitez réaliser une sérialisation / désérialisation multilingue, vous pouvez recourir à XML ( XSTream pour Java, XStream-dot-net pour C #) ou WOX :

WOX est un sérialiseur XML pour les objects Java et C #. En d’autres termes, WOX est une bibliothèque (woxSerializer.jar pour Java et woxSerializer.dll pour C #) permettant de sérialiser des objects Java et C # en XML et inversement.

WOX sera utile pour réaliser une sérialisation interopérable.
il peut serialize/deserialize Java/C# objects Java/C# into/from XML standard (indépendant de la plate-forme)

Si vous souhaitez inclure une autre dépendance, vous pouvez envisager d’utiliser une firebase database object, telle que db4o, pour le travail. Je n’ai pas essayé moi-même, mais d’après l’article de Wikipedia,

db4o utilise une fonctionnalité personnalisée appelée “réflecteur générique” pour représenter les informations de classe lorsque les définitions de classe ne sont pas disponibles, ce qui permet de les utiliser dans un environnement mixte Java-.NET, par exemple le client Java – serveur .NET et inversement.

Vous pouvez trouver plus d’informations sur l’API de reflection susmentionnée ici et ici .

En résumé, cela aboutirait à un système dans lequel vous stockeriez vos objects Java / C # dans une firebase database (intégrée) (c’est-à-dire sans architecture client / serveur, mais en chargeant un seul fichier contenant la totalité de la base de objects de la firebase database par la suite.