Json
发布时间:2022-04-22 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了微調一下 Json.net ,讓他可以序列基本型別,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
因為 Json.net 是有附原始碼的,他也附了單元測試的專案,底下是我額外增加的UnitTest,我的目標就是讓底下的測試可以pass,而且原來的Test 也要都能通過。
ValueTypeTest.cs
@H_
419_10@
using Sy
stem;
using NUnit.Framework;
namespace Newtonsoft.Json.Test
{ [TestFixture]
public class ValueTypeTest
{ [Test]
void Null
test() { String jso
ntext = JavaScriptConvert.
serializeOb
ject(
null); object obj = JavaScriptConvert.De
serializeOb
ject<Ob
ject>(jso
ntext
); Console.WriteLine(jso
ntext
); Assert.IsNull(obj
); }
[Test]
void String
test() { String jso
ntext = JavaScriptConvert.
serializeOb
ject("
Hello world"
); object obj = JavaScriptConvert.De
serializeOb
ject<
object>(jso
ntext
); Console.WriteLine(jso
ntext
); Assert.AreEqual(obj,"
Hello world"
); }
[Test]
void Integer
test() { String jso
ntext = JavaScriptConvert.
serializeOb
ject(1234
); int n = JavaScriptConvert.De
serializeOb
ject<
int>(jso
ntext
); Console.WriteLine(jso
ntext
); Assert.AreEqual(n,1234
); }
[Test]
void datetiR_575_11845@e
test() { new datetiR_575_11845@e(2007,7,22,12,4,55)
); datetiR_575_11845@e dtime = JavaScriptConvert.De
serializeOb
ject<
datetiR_575_11845@e>(jso
ntext
); Console.WriteLine(jso
ntext
); Assert.AreEqual(dtime,
);
}
[Test]
void Booleantest() {
true);
bool bVal = JavaScriptConvert.DeserializeObject<bool>(jsontext);
Console.WriteLine(jsontext);
Assert.AreEqual(bVal,255);">String jsontext2 = JavaScriptConvert.serializeObject(false);
bool bVal2 = JavaScriptConvert.DeserializeObject<bool>(jsontext2);
Console.WriteLine(jsontext2);
Assert.AreEqual(bVal2,255);">falsE);
}
[Test]
void Floattest() {
String jsontext = JavaScriptConvert.serializeObject(12345.68F);
float fVal = JavaScriptConvert.DeserializeObject<float>(jsontext);
Console.WriteLine(jsontext);
Assert.AreEqual(fVal,12345.68F);
}
[Test]
void Enumtest() {
String jsontext = JavaScriptConvert.serializeObject(StoreColor.WhitE);
StoreColor color = JavaScriptConvert.DeserializeObject<StoreColor>(jsontext);
Console.WriteLine(jsontext);
Assert.AreEqual(color,StoreColor.WhitE);
}
}
}
@H_419_10@
開始看code後,發現比想像中的簡單,失敗的原因是作者有檢查且擋掉,或許這不是 bug 而是 by design 吧
Jsonserializer.cs,line:406-407
修改前:
if (value == null)
throw new ArgumentNullException("value");
修改後:
//if (value == null)
// throw new ArgumentNullException("value");
JsonWriter.cs,line104
修改前:
/* Value */{ State.Error,State.object,State.Error,State.Array,State.Error },
修改後:/* Value */{ State.Closed,
大佬总结
以上是大佬教程为你收集整理的微調一下 Json.net ,讓他可以序列基本型別全部内容,希望文章能够帮你解决微調一下 Json.net ,讓他可以序列基本型別所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。