0
我正在DataSet
並通過JSON.NETJSON.NET轉換特定關鍵整數
我面臨的問題是其中一個字段存儲爲一個浮點值,將其轉換爲JSON,但我需要它作爲一個整數序列化。我不想改變全部浮點數爲整數,只是那一個字段。
有沒有人有這樣的例子?
我正在DataSet
並通過JSON.NETJSON.NET轉換特定關鍵整數
我面臨的問題是其中一個字段存儲爲一個浮點值,將其轉換爲JSON,但我需要它作爲一個整數序列化。我不想改變全部浮點數爲整數,只是那一個字段。
有沒有人有這樣的例子?
假設我們已經從dbTable填充了數據。我們需要從它自己的改變場dbTableField值類型爲double:
var ds = new DataSet();
new SqlDataAdapter(com).Fill(ds, "dbTable");
var result = JsonConvert.SerializeObject(ds, Formatting.Indented, new
DataSetFieldTypeConverter(typeof(double), "dbTable", "dbTableField"));
下面
是DataSetFieldTypeConverter類:
class DataSetFieldTypeConverter : JsonConverter
{
private Type convertTo;
private string tableName;
private string fieldName;
public DataSetFieldTypeConverter(Type convertTo, string tableName, string fieldName)
{
this.convertTo = convertTo;
this.tableName = tableName;
this.fieldName = fieldName;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value);
if (t.Type != JTokenType.Object)
{
t.WriteTo(writer);
}
else
{
JObject jsonObj = t as JObject;
if (jsonObj != null && jsonObj[tableName] != null && jsonObj[tableName][0][fieldName] != null)
{
var propVal= jsonObj[tableName][0][fieldName].Value<string>();
//Write your own covert logic here
if (convertTo == typeof(int))
{
int propValInt;
if (int.TryParse(propVal, out propValInt))
{
jsonObj[tableName][0][fieldName] = propValInt;
}
}
if (convertTo == typeof(double))
{
double propValInt;
if (double.TryParse(propVal, out propValInt))
{
jsonObj[tableName][0][fieldName] = propValInt;
}
}
jsonObj.WriteTo(writer);
}
}
}
這個環節將是有益的:https://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm
怎樣把一個DataSet到JSON?請分享您的代碼和一些示例數據以及您希望得到的-HTH;)的結果。 –