2016-03-02 14 views
0

使用以下代码将数据转换为Json并返回值为: “{\”BillNo \“:18}”“。但我想对键值对返回值一样:{“BillNo”:18}如何将数据转换或序列化为C#中的Json格式?

 public String Get() 

     { 
     var MaxBillNo = db.Billings.Max(b => b.BillNo.Substring(9, 5)); 
     int i = Int32.Parse(MaxBillNo); 
     BillNumber billNumber = new BillNumber(); 
     billNumber.BillNo = i; 
     string json = JsonConvert.SerializeObject(billNumber); 
     return json; 
     } 
+0

你为什么不使用[Newtonsoft(http://www.newtonsoft.com/json) –

+0

BillNo是BillNumber对象中的整数,因此它将被序列化为没有引号的整数。 –

+4

好的,你在哪里看到“{\”BillNo \“:18}” - 是从调试还是实际打印?因为调试只是引用被转义,所以实际的值将是“本身。” –

回答

0

"{\"BillNo\":18}"是有效的JSON字符串将在JavaScript解析在客户端而不是{"BillNo":18}

var myJson = "{\"BillNo\":18}"; 
 
console.log(JSON.parse(myJson));

+0

在Json中传递整数不需要转换为文本'{“BillNo”:18}'是有效的,OP是询问转义字符 –

+0

我想返回值如:{“BillNo”:18} – Mani

0

不幸的是,这是不可能的。它是标准的C#字符串格式化规则。 \”是一个双引号见转义序列:。https://msdn.microsoft.com/en-us/library/h21280bw.aspx

+0

为什么不可能?事实上,我敢打赌OP会在调试窗口中混淆显示'\“的值字段的实际字符串 –

+0

为了能够在字符串中使用双引号,您必须先使用反斜杠。是C#规范。 –

+0

只是在文字中,即你在你的代码中输入的字符串,但我们并不是在谈论这个,OP是问为什么字符串值包含转义字符?很可能它没有,并且OP正在检查值在调试窗口中,在控制台上打印或写入一个文件,结果将是'{“BillNo”:18}' –

0

有可能在C#但是,你必须传递对象序列化方法的说明这里是下面给出的样本,希望所以这将是对你有所帮助。

SmaccLib smacclib = new SmaccLib(); 
    smaccDate = smacclib.Date_SaveFormat(date); 

    List<EmployeeAbsents> listEmployeeAbsents = _hrManager.EmployeeAbsentManager.SelectEmployeeAbsentsByDate(smaccDate, rowIndex); 

    if (listEmployeeAbsents != null && listEmployeeAbsents.Count > 0) 
    { 
     return JsonConvert.SerializeObject(listEmployeeAbsents); 
    } 
    return string.Empty; 

你结果会是这样的。

"[{"EmployeeAbsentID":"81e930bb-a38e-4b85-ba6c-9cbd6e706872","EmployeeCode":"20","EmployeeName":"Bilal","AbsentDate":"11/09/2016","AbsentTypeCode":"10","AbsentTypeName":"Casual","IsDeductable":true,"Remarks":"re","EntryFrom":0,"RowIndex":4,"OperatingUserID":0,"RecordTimeStamp":"2016-02-19T13:20:44.417"}]" 
相关问题