2014-02-12 5 views
2

라이브러리는 JSON이 문자열로 쓰여질 수있는 형식이므로 라이브러리 또는 때때로 언어 자체에 의해 해석되어야합니다.LitJSON 라이브러리 FLOAT/DOUBLE 형식의

이전 버전의 C#에는 이와 비슷한 것이 없습니다. LitJSON 라이브러리 사용하기 다음과 같은 문제가 있습니다. Vector3이라는 클래스에 3 개의 float 값 (double이 아님)이 있습니다.

public class Vector3 { 
public float x{get;set;} 
public float y{get;set;} 
public float z{get;set;} 
} 

LitJSON에서 다음 코드를 사용하면 실제로 shoudl은 Vector3의 인스턴스에 값을 채 웁니다.

Vector3 test = JsonMapper.ToObject<Vector3>("{'x':1.0,'y':1.0,'z':1.0}"); 

는하지만 오류가 occures '가 값 (유형 Single.Double)를 할당 할 수 없습니다 System.Single'그것은 단지 이중 알고 있지만 플로트 보인다

:/

에 대한 모든 솔루션 이? 내가 Github에서의 자신의 소스 코드에서 본 것을에서

답변

3

자신의 라이브러리에서 Jsondata.cs에서하지 단일

추출물을 지원하지만 내 명성은 <입니다 50.

Unity3D에서 LitJson을 사용하고있었습니다 (스크립트 언어 Mono C#). 나는 플로슨 mebmbers 많은 개체에 json을 구문 분석하는 동안 같은 문제에 직면했다. LitJson 라이브러리에 float 지원을 추가했습니다. 아직도 이것을 요구하면 알려주세요.

+0

이 작업을 수행 했습니까? 나는 해결책에 흥미가있을 것이다 – marius

+0

나는 내일 코드를 게시 할 것이다 – Mazhar

+2

당신은 [여기]에서 업데이트 된 LitJson 라이브러리를 다운로드 할 수있다 (http://kdpr.byethost24.com/LitJson-float-support.unitypackage) – Mazhar

2

라이브러리는 두 번 내가 언급하고 싶었

#region Fields 
private IList<JsonData> inst_array; 
private bool inst_boolean; 
private double inst_double; 
private int inst_int; 
private long inst_long; 
private IDictionary<string, JsonData> inst_object; 
private string inst_string; 
private string json; 
private JsonType type; 
+0

전에 코드의 다음 줄을 추가하지만 잘에 작동하지 않습니다 지금까지 :/ – marius

+0

응용 프로그램 내에서 이중 사용 하시겠습니까? 그것은 간단 해 보이는 것 같습니다. – Anand

+0

내가 가질 수 있다면, 나는 여기에 그것을 요구하지 않을 것이다 : P. 나는 이것을위한 빠른 해결책이 없다고 생각한다. 그래서 나는 정말로 내 코드를 많이 다시 써야한다. 어쨌든 고맙다. – marius

3

같은 문제가 있었지만 마침내 해결책을 찾았습니다. 내가 aswell 밖으로 figgured하지만 문제는 왜 ... 내가 해결 방법을 작성하는 것을 시도하고있다 무엇 당신의 "ToObject"/ "ToJson"

JsonMapper.RegisterExporter<float>((obj, writer) => writer.Write(Convert.ToDouble(obj))); 
JsonMapper.RegisterImporter<double, float>(input => Convert.ToSingle(input));