Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
runtime
提交
89d967b7
R
runtime
项目概览
dotNET Platform
/
runtime
12 个月 前同步成功
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
runtime
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
89d967b7
编写于
11月 15, 2021
作者:
E
Eirik Tsarpalis
提交者:
GitHub
11月 15, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add JsonSerializerOptions.Default (#61434)
* Add JsonSerializerOptions.Default * address feedback * address feedback
上级
0681dd60
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
41 addition
and
13 deletion
+41
-13
src/libraries/System.Text.Json/System.Text.Json.sln
src/libraries/System.Text.Json/System.Text.Json.sln
+2
-2
src/libraries/System.Text.Json/ref/System.Text.Json.cs
src/libraries/System.Text.Json/ref/System.Text.Json.cs
+1
-0
src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonArray.cs
.../System.Text.Json/src/System/Text/Json/Nodes/JsonArray.cs
+1
-1
src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.cs
...System.Text.Json/src/System/Text/Json/Nodes/JsonObject.cs
+1
-1
src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueTrimmable.cs
...ext.Json/src/System/Text/Json/Nodes/JsonValueTrimmable.cs
+1
-1
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Helpers.cs
.../System/Text/Json/Serialization/JsonSerializer.Helpers.cs
+1
-1
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Stream.cs
...tem/Text/Json/Serialization/JsonSerializer.Read.Stream.cs
+1
-1
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs
...c/System/Text/Json/Serialization/JsonSerializerOptions.cs
+9
-4
src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/OptionsTests.cs
...ests/System.Text.Json.Tests/Serialization/OptionsTests.cs
+24
-2
未找到文件。
src/libraries/System.Text.Json/System.Text.Json.sln
浏览文件 @
89d967b7
...
...
@@ -21,9 +21,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Text.Encodings.Web",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Text.Encodings.Web", "..\System.Text.Encodings.Web\src\System.Text.Encodings.Web.csproj", "{9BCCDA15-8907-4AE3-8871-2F17775DDE4C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Text.Json.SourceGeneration", "gen\System.Text.Json.SourceGeneration.Roslyn3.11.csproj", "{04AEB008-EE4F-44DE-A361-2DBD2D0FD6A4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Text.Json.SourceGeneration
.Roslyn3.11
", "gen\System.Text.Json.SourceGeneration.Roslyn3.11.csproj", "{04AEB008-EE4F-44DE-A361-2DBD2D0FD6A4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Text.Json.SourceGeneration", "gen\System.Text.Json.SourceGeneration.Roslyn4.0.csproj", "{6485EED4-C313-4551-9865-8ADCED603629}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Text.Json.SourceGeneration
.Roslyn4.0
", "gen\System.Text.Json.SourceGeneration.Roslyn4.0.csproj", "{6485EED4-C313-4551-9865-8ADCED603629}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Text.Json", "ref\System.Text.Json.csproj", "{7015E94D-D20D-48C8-86D7-6A996BE99E0E}"
EndProject
...
...
src/libraries/System.Text.Json/ref/System.Text.Json.cs
浏览文件 @
89d967b7
...
...
@@ -303,6 +303,7 @@ public sealed partial class JsonSerializerOptions
public
JsonSerializerOptions
(
System
.
Text
.
Json
.
JsonSerializerOptions
options
)
{
}
public
bool
AllowTrailingCommas
{
get
{
throw
null
;
}
set
{
}
}
public
System
.
Collections
.
Generic
.
IList
<
System
.
Text
.
Json
.
Serialization
.
JsonConverter
>
Converters
{
get
{
throw
null
;
}
}
public
static
System
.
Text
.
Json
.
JsonSerializerOptions
Default
{
get
{
throw
null
;
}
}
public
int
DefaultBufferSize
{
get
{
throw
null
;
}
set
{
}
}
public
System
.
Text
.
Json
.
Serialization
.
JsonIgnoreCondition
DefaultIgnoreCondition
{
get
{
throw
null
;
}
set
{
}
}
public
System
.
Text
.
Json
.
JsonNamingPolicy
?
DictionaryKeyPolicy
{
get
{
throw
null
;
}
set
{
}
}
...
...
src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonArray.cs
浏览文件 @
89d967b7
...
...
@@ -168,7 +168,7 @@ public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions? optio
CreateNodes
();
Debug
.
Assert
(
_list
!=
null
);
options
??=
JsonSerializerOptions
.
s_defaultOptions
;
options
??=
JsonSerializerOptions
.
Default
;
writer
.
WriteStartArray
();
...
...
src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.cs
浏览文件 @
89d967b7
...
...
@@ -96,7 +96,7 @@ public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions? optio
}
else
{
options
??=
JsonSerializerOptions
.
s_defaultOptions
;
options
??=
JsonSerializerOptions
.
Default
;
writer
.
WriteStartObject
();
...
...
src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueTrimmable.cs
浏览文件 @
89d967b7
...
...
@@ -34,7 +34,7 @@ public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions? optio
if
(
_converter
!=
null
)
{
options
??=
JsonSerializerOptions
.
s_defaultOptions
;
options
??=
JsonSerializerOptions
.
Default
;
if
(
_converter
.
IsInternalConverterForNumberType
)
{
...
...
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Helpers.cs
浏览文件 @
89d967b7
...
...
@@ -17,7 +17,7 @@ private static JsonTypeInfo GetTypeInfo(JsonSerializerOptions? options, Type run
{
Debug
.
Assert
(
runtimeType
!=
null
);
options
??=
JsonSerializerOptions
.
s_defaultOptions
;
options
??=
JsonSerializerOptions
.
Default
;
if
(!
options
.
IsInitializedForReflectionSerializer
)
{
options
.
InitializeForReflectionSerializer
();
...
...
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Stream.cs
浏览文件 @
89d967b7
...
...
@@ -371,7 +371,7 @@ public static partial class JsonSerializer
throw
new
ArgumentNullException
(
nameof
(
utf8Json
));
}
options
??=
JsonSerializerOptions
.
s_defaultOptions
;
options
??=
JsonSerializerOptions
.
Default
;
if
(!
options
.
IsInitializedForReflectionSerializer
)
{
options
.
InitializeForReflectionSerializer
();
...
...
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs
浏览文件 @
89d967b7
...
...
@@ -20,7 +20,15 @@ public sealed partial class JsonSerializerOptions
{
internal
const
int
BufferSizeDefault
=
16
*
1024
;
internal
static
readonly
JsonSerializerOptions
s_defaultOptions
=
new
JsonSerializerOptions
();
/// <summary>
/// Gets a read-only, singleton instance of <see cref="JsonSerializerOptions" /> that uses the default configuration.
/// </summary>
/// <remarks>
/// Each <see cref="JsonSerializerOptions" /> instance encapsulates its own serialization metadata caches,
/// so using fresh default instances every time one is needed can result in redundant recomputation of converters.
/// This property provides a shared instance that can be consumed by any number of components without necessitating any converter recomputation.
/// </remarks>
public
static
JsonSerializerOptions
Default
{
get
;
}
=
new
JsonSerializerOptions
{
_haveTypesBeenCreated
=
true
};
private
readonly
ConcurrentDictionary
<
Type
,
JsonTypeInfo
>
_classes
=
new
ConcurrentDictionary
<
Type
,
JsonTypeInfo
>();
...
...
@@ -709,9 +717,6 @@ internal JsonWriterOptions GetWriterOptions()
internal
void
VerifyMutable
()
{
// The default options are hidden and thus should be immutable.
Debug
.
Assert
(
this
!=
s_defaultOptions
);
if
(
_haveTypesBeenCreated
||
_context
!=
null
)
{
ThrowHelper
.
ThrowInvalidOperationException_SerializerOptionsImmutable
(
_context
);
...
...
src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/OptionsTests.cs
浏览文件 @
89d967b7
...
...
@@ -512,6 +512,28 @@ public static void CopyConstructor_NullInput()
Assert
.
Contains
(
"options"
,
ex
.
ToString
());
}
[
Fact
]
public
static
void
JsonSerializerOptions_Default_MatchesDefaultConstructor
()
{
var
options
=
new
JsonSerializerOptions
();
JsonSerializerOptions
optionsSingleton
=
JsonSerializerOptions
.
Default
;
VerifyOptionsEqual
(
options
,
optionsSingleton
);
}
[
Fact
]
public
static
void
JsonSerializerOptions_Default_ReturnsSameInstance
()
{
Assert
.
Same
(
JsonSerializerOptions
.
Default
,
JsonSerializerOptions
.
Default
);
}
[
Fact
]
public
static
void
JsonSerializerOptions_Default_IsReadOnly
()
{
var
optionsSingleton
=
JsonSerializerOptions
.
Default
;
Assert
.
Throws
<
InvalidOperationException
>(()
=>
optionsSingleton
.
IncludeFields
=
true
);
Assert
.
Throws
<
InvalidOperationException
>(()
=>
optionsSingleton
.
Converters
.
Add
(
new
JsonStringEnumConverter
()));
}
[
Fact
]
public
static
void
DefaultSerializerOptions_General
()
{
...
...
@@ -542,7 +564,7 @@ private static JsonSerializerOptions GetFullyPopulatedOptionsInstance()
{
var
options
=
new
JsonSerializerOptions
();
foreach
(
PropertyInfo
property
in
typeof
(
JsonSerializerOptions
).
GetProperties
())
foreach
(
PropertyInfo
property
in
typeof
(
JsonSerializerOptions
).
GetProperties
(
BindingFlags
.
Public
|
BindingFlags
.
Instance
))
{
Type
propertyType
=
property
.
PropertyType
;
...
...
@@ -596,7 +618,7 @@ private static JsonSerializerOptions GetFullyPopulatedOptionsInstance()
private
static
void
VerifyOptionsEqual
(
JsonSerializerOptions
options
,
JsonSerializerOptions
newOptions
)
{
foreach
(
PropertyInfo
property
in
typeof
(
JsonSerializerOptions
).
GetProperties
())
foreach
(
PropertyInfo
property
in
typeof
(
JsonSerializerOptions
).
GetProperties
(
BindingFlags
.
Public
|
BindingFlags
.
Instance
))
{
Type
propertyType
=
property
.
PropertyType
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录