2017-09-20 1 views
0

가 나는 DataSet을 복용하고 JSON.NETJSON.NET가 특정의 키가

내가 직면 해요 문제는 필드 중 하나가 부동 소수점 값으로 저장되어 있다는 것입니다 통해 JSON으로 변환하고있어 정수로 변환하지만, 대신 정수로 직렬화해야합니다. 나는 변경하고 싶지 않다 모두 정수로 부동 소수점, 단지 하나의 필드.

누구나 그 예가 있습니까?

+0

가 어떻게 데이터 집합으로 변환 할 아래

var ds = new DataSet(); new SqlDataAdapter(com).Fill(ds, "dbTable"); var result = JsonConvert.SerializeObject(ds, Formatting.Indented, new DataSetFieldTypeConverter(typeof(double), "dbTable", "dbTableField")); 

가 DataSetFieldTypeConverter 클래스입니다 JSON에? 귀하의 코드와 몇 가지 샘플 데이터와 그 예상 결과를 공유하십시오. –

답변

0

dbTable의 데이터로 ds가 채워 졌다고합시다. 우리는 두 번에 자신의에서 필드 dbTableField 값 유형을 변경해야합니다

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

관련 문제