我正在使用WebApi发送json数据,我有Json结构包含:
{"totalAmount":0.01,"transactions":[{"Tokens":1,"transactionDI":1,"deviceUserDI":2,"routeDI":1,"DateTimeProceed":"\/Date(1406482920000+0100)\/","Typetran":1,"usedtokens":[{"usedtokenValue":9.32,"usedtokenType":3,"usedtokenId":"d798ee2d920e488487014d2a5ce46e7f"}]}],"numberofTransactions":1,"type":"insertit","validation":"68W956!8$97123@Y$"}
我使用fiddler发送的内容正在使用dynamic objectData
进行访问,然后使用JsonConvert.DeserializeObject
进行反序列化。
之后我将objectData.ToString()
的相同请求插入数据库,
相同的结果存储在数据库中(字符串结果)。
但是当我尝试
时{
"totalAmount": 0.01,
"transactions": [
{
"Tokens": 1,
"transactionDI": 1,
"deviceUserDI": 2,
"routeDI": 1,
"DateTimeProceed": "\/Date(1406482920000+0100)\/",
"Typetran": 1,
"usedtokens": [
{
"usedtokenValue": 9.32,
"usedtokenType": 3,
"usedtokenId": "d798ee2d920e488487014d2a5ce46e7f"
}
]
}
],
"numberofTransactions": 1,
"type": "insertit",
"validation": "68W956!8$97123@Y$"
}
这以我上面使用的相同方式存储数据,但它以我发送的相同格式存储到数据库中
现在数据库中两者之间的区别是:
我用于获取请求的方法
[HttpPost]
public JObject UploadIT(dynamic objectData)
{
//stuffs
}
有人能告诉我为什么以不同的方式插入相同的记录?
答案 0 :(得分:1)
根据您的操作代码,行为是正确的。
由于您的objectData
包含换行符,并且您只是将其插入数据库,因此会保留换行符。
您可以尝试objectData.ToString().Replace("\r\n", string.Empty);
更新:您可以执行objectData.ToString().Replace(" ", string.Empty).Replace("\r\n", string.Empty);
如果您确定某些请求来自Windows,则可以使用Environment.Newline
代替\r\n
。
更新2 :如果您要存储漂亮的打印版本,则必须重新序列化transactionData:JsonConvert.SerializeObject(transactionData, Formatting.Indented);
我并非100%确定如果它会在':'之后插入空格,但您可以随时.Replace(":", ": ");
答案 1 :(得分:0)
解决使用:
dynamic model = JObject.Parse(objectData.ToString());
我正在使用objectData.ToString()并再次将其解析为动态对象,并且它将我无法找到的空间添加到数组中。
如果我不想再次将其分配给动态对象,我可以直接使用JObject.Parse(objectData.ToString())
。