2015-02-03 3 views
1

약간 온라인으로 검색 한 결과 내 질문에 대한 답을 찾을 수 없습니다.방법 : JavaScript에서 C# 개체를 deserialize하십시오.

나는 MemoryStream의 Object로 만든 C# serialization을 가지고 있습니다. 직렬화 (내가 이미 할 수있는 일)를 저장하고 JavaScript로 역 직렬화하고 싶습니다.

가능하면 누구에게 알리십니까? 나는 그것을 할 수있는 API를 보지 못했습니다.

답장을 보내 주셔서 감사합니다. 좀 더 구체적으로 말하자면, 이미 C#에서 MemoryStream의 비 직렬화를 사용하는 응용 프로그램을 실행하고 있습니다. 이것은 꽤 큰 응용 프로그램이며 가능한 한 적은 수의 수정 만하고 싶습니다. 다른 응용 프로그램 (HTML/JavaScript로 실행 중)과 첫 번째 응용 프로그램을 동일한 직렬화를 사용하여 연결하고 싶습니다. JSON 직렬화를 사용하는 경우 C# 코드를 자주 수정해야하는데 이는 피하려고 시도하는 것입니다.

요약하면, 저는 "javascript 프로젝트에서 C#에 의해 생성 된 직렬화를"읽을 수 있어야합니다.

다른 직렬화를 JSON/XML /에 사용하고 싶지 않다. 이미 사용하고있는 것을 사용하고 싶습니다. 그런 다음 JavaScript로 역 직렬화합니다.

미리 감사드립니다.

+0

몇 가지 코드 샘플을 제공해 주시겠습니까? 왜 현재 직렬화되지 않습니까? – BanksySan

+1

음, 이걸 자바 스크립트가 어떻게 읽으 리라 기대합니까? – epascarello

+0

@epascarello가 말한 것에 대해 자세히 말하면 자바 스크립트는 MemoryStream에 접근 할 수 없습니다. 서버 메모리에 있기 때문입니다. 왜 JSON 또는 XML을 사용하지 않으시겠습니까? 그게 유일한 방법 일거야. 메모리 스트림을 출력 할 수 있다고하더라도 C#에서 메모리에있는 객체가 JS가하는 방식과 다르다는 것을 JS가 알 수 없으므로이를 역 직렬화하는 방법을 알지 못합니다. –

답변

4

C#에서 직렬화를 사용하면 대개 이진 또는 XML 직렬화가됩니다. 그 중 어느 것도 JavaScript에서 즉시 읽을 수는 없습니다. (그리고 이것을 구현하려고 노력할 가치는 없습니다.)

그러나 JSON과 (그 반대로) 객체 직렬화에서 전환은 정말 열심히되지 않습니다 :

Person p = new Person(); 
p.name = "John"; 
p.age = 42; 
MemoryStream stream1 = new MemoryStream(); 
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person)); 
ser.WriteObject(stream1, p); 

(MSDN에서 예 : https://msdn.microsoft.com/en-us/library/bb412179%28v=vs.110%29.aspx)

겠어요 - 있음 : 요구 사항을 다시 생각하십시오. Json 없이는 쉬운 솔루션을 찾을 수 없습니다.

+0

나는 downvoting과 downvoting 사이에 찢겨져 있는데, 질문자는 특별히 비현실적인 JSON이 없다고 말했지만, 이것은 아마도 가장 좋은 방법 일 것입니다. –

+2

asker가 JSON없이 해결책을 찾고 있다는 느낌이 들었습니다. 왜냐하면 그는 이것을 모르기 때문에, 이것을 달성하는 방법을 모르기 때문입니다. "당신은 JSON을 사용해야 만하지만 어렵지는 않습니다"라고 말했습니다. 나를 위해 옳은 대답 :) –

+1

그리고 당신이 대답에 그것을 인정하기 때문에 upvote –

0

XML 직렬화 또는 JSON을 시도해 볼 수 있습니다. C 번호는 XML 제공자 클래스 느릅 나무가 사용하기 쉬운,하지만 자바와 C#은 같은 방식으로 역 직렬화 할 수 있습니다 당신은 객체 배열로 데이터를 구문 분석해야합니다

public class person 
{ 
    public string name; 
    public byte age; 
    public person(object[] args) 
    { 
    name = args[0]; 
    age = args[1]; 
    } 
} 

받으십시오에 당신이 objec에 역 직렬화 할 수 [] 다음 내가 정확하게 자바 스크립트 클래스를 HANDELS 잘 모릅니다하지만 Serilaziation 수준에, 당신은 기본적인 수준에서 작동해야 깨끗한을 가지고 (만 객체 배열과 역으로 변수를 직렬화)

Person p = new Person(rec_args); 

와 함께 클래스 인스턴스를 생성 버그가없는 실행!

관련 문제