33170


Javaで生成したオブジェクトをシリアライズして標準入出力を介してC#に渡してデシリアライズしたいです。

シリアライズ、デシリアライズしたいクラスは以下のようなものです。

[code]

    class Member
    {
    public String Name;
    public String Email;
    }
    
    class Group
    {
    public String Name;
    pubilc String Email;
    public List &lt;Member&gt; Members;
    }
    
[/code]

上記クラスでのList<Group>をJava,C#間で受け渡ししたいです。  
オブジェクトをシリアライズ、デシリアライズするには  
XMLやYAMLといった形式があるみたいです。  
しかしどのライブラリを使うかによって同じXMLやYAMLでも微妙に形式の違いがあるようです。  
JavaのオブジェクトをC#で再生するにはJava側、C#側それぞれで  
どのライブラリの組み合わせを使えば一番うまくいくでしょうか。

クラスになにも手を加えないでJavaのオブジェクトをC#で再現できるのが一番ですが、  
必要ならばクラスをHashMapに変換する程度の手間は許容できます。

よろしくお願いします。


CC BY-SA 3.0
2017-03-07T11:39:03.590
33168
2017-03-08T12:32:42.963
2017-03-07T14:52:30.983
49
18637
question
java c# xml
JavaのオブジェクトをシリアライズしてC#でデシリアライズしたい


Java側にSimple、C#側に`XmlSerializer`を使用するのが良いかと思います。  
ただし要素名/属性名が大文字と小文字でぶれますので、JavaアノテーションもしくはC#カスタム属性で統一してやる必要があります。通常はJava側で

[code]

    @Root(name = "Group")
    public class Group {
    
        @Element(name = "Name")
        public String Name;
    
        @Element(name = "Email")
        public String Email;
    
        @ElementList(name = "Members")
        public List<Member> Members;
    
    }
    
    @Root(name = "Member")
    public class Member {
    
        @Element(name = "Name")
        public String Name;
    
        @Element(name = "Email")
        public String Email;
    
    }
    
[/code]

と各アノテーションの`name`を明示してやればよいです。


CC BY-SA 3.0
2017-03-07T12:52:02.837
33170
2017-03-08T12:32:42.963
2017-03-08T12:32:42.963
5750
5750
33168
answer