2011-08-24 5 views
3

은 내가 지금 문제가 C 번호로 해당 파일을 역 직렬화가는 C#에서 자바 직렬화 파일을 직렬화 복원

ObjectOutputStream oos = new ObjectOutputStream(fos); 
oos.writeInt(RANK_SIZE); 
oos.writeObject(_firstArray); 
oos.writeObject(_level[3]); 
oos.writeObject(_level[4]); 
... 

같은 기능을 가진 파일에 일부 개체와의 int를 직렬화 자바 프로젝트를합니다 (BinaryFormatter을 시도) 한 분명히 전체 파일을 단일 객체 (또는 배열)로만 역 직렬화 할 수 있기 때문에 다른 길이의 다른 객체를 가질 수 있습니다.

나는이 파일의 생성을 C#으로 이식하기 위해 먼저 시도했지만 비참하게 실패했다. 이 파일들은 작기 때문에 을 직접 생성해야합니다.

Java에서 이러한 파일이 생성되는 방식을 변경해야합니까? 아니면 어떤 방식 으로든이를 deserialize 할 수 있습니까?

+0

자바와 .NET이 동일한 이진 포매터를 가지고 있는지 확실하지 않습니다. 대신 xml을 사용하지 않는 이유는 무엇입니까? 어쨌든 좋은 질문입니다. 사람들의 의견을 듣고 싶습니다. –

+3

크로스 플랫폼 직렬화 형식이 필요합니다. 나는 protobuf쪽으로 의지 만, xml, json, heck : CSV! 플랫폼에 묶여 있지 않은 것 –

답변

10

Java 객체를 역 직렬화하는 방법을 알고있는 표준 .NET 프레임 워크에는 아무 것도 없습니다. 일 수 있습니다. 이론적으로 Java 직렬화 사양을 사용하고 C#에서 고유 한 직렬화 코드를 작성하십시오. 그러나 크고 복잡한 프로젝트 일 것이고, 많은 고객이이 프로젝트를 사용하는데 관심이 없다고 생각합니다.

JSON 또는 일부 XML 형식을 사용하여 데이터를 이식 가능한 형식으로 직렬화하는 방식을 훨씬 쉽게 변경하는 것이 훨씬 쉬울 것입니다. 이러한 형식을 처리 할 수있는 Java 및 C# 라이브러리가 있으며 전체 노력은 그보다 훨씬 적습니다. 나는이 두 번째 접근법을 크게 선호 할 것이다.

+1

C#은 언어입니다. 프레임 워크에서 사전 배포 패키지를 사용할 수 없다는 의미였습니다. ikvm은 C# –

+0

내에서 그것을 할 수 있습니다 충분히 공정, 편집. –

+0

고마워, 나는 자바와 C# 둘 다에서 별도의 클래스를 만들었고, Json으로 직렬화했고, 그것을 직렬화 해제하는 데 문제가 없었다. – Sven

5

일견 반 직관적 인 해결책은 JSON과 같이 일반적으로 이해할 수있는 형식으로 직렬화하는 것일 수 있습니다. Java에서 직렬화 된 객체에 대한 바이너리 형식이 Java 버전간에 변경되지 않는다고 확신하지는 않습니다. ...

는 Java JSON 라이브러리의 경우 개인적으로 가장 좋아하는 항목입니다.

3

http://www.ikvm.net/ IKVM에서 완벽하게 처리 할 수 ​​있습니다.

+0

이 프로젝트를 배우는 데는 여전히 놀랍습니다. 그래서 작동합니까? –

+0

@Ernest Friedman-Hill 나도 그래, 맞아. 그들은 IKVM을 사용하여 Eclipse와 JBoss를 실행하는 테스트를 가지고 있습니다. –