2014-02-12 23 views
2

由於JSON是一種可寫爲字符串的格式,因此必須由庫或有時由語言本身來解釋。LitJSON Library格式爲FLOAT/DOUBLE問題

在舊版本的C#中沒有這樣的東西。使用庫LitJSON我有以下問題我有一個名爲Vector3的類包含3個浮點值(不是double)。

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

使用以下利用LitJSON剪下的代碼,它實際上用值來填充Vector3的實例。

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

但錯誤occures '無法分配值(類型Single.Double)以System.Single'

似乎只知道雙,但沒有浮動:/

所有解決方案這個?

回答

3

我想評論不是單一

提取從他們的圖書館,但我的名譽是< 50.

我在Unity3D(腳本語言Mono C#)中使用LitJson。我將json解析爲一個擁有大量浮動mebmbers的對象時遇到同樣的問題。我已經爲LitJson庫添加了浮點支持。讓我知道你是否仍然需要這個。

+0

你是否設法做到了這一點?我會對解決方案感興趣 – marius

+0

明天我會發布代碼 – Mazhar

+2

您可以從[這裏](http://kdpr.byethost24.com/LitJson-float-support.unitypackage)下載更新的LitJson庫, – Mazhar

2

從我從Github上自己的源代碼看到的庫支持雙和Jsondata.cs

#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

這就是我figgured了藏漢,但問題是爲什麼......我想寫一個解決辦法之前,但它不工作很好地直到現在:/ – marius

+0

你不能在你的應用程序中使用double嗎?這似乎是一個直截了當的解決方案。 – Anand

+0

如果可以的話,我不會在這裏要求:P。我想沒有快速解決方案,所以我真的不得不重寫我的代碼......無論如何,謝謝你! – marius

3

有同樣的問題,終於找到了解決辦法。 添加幾行代碼的「ToObject」 /「的toJSON」

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