File tree Expand file tree Collapse file tree 2 files changed +31
-10
lines changed
src/JSInterop/Microsoft.JSInterop Expand file tree Collapse file tree 2 files changed +31
-10
lines changed Original file line number Diff line number Diff line change @@ -29,19 +29,39 @@ public ByteArrayJsonConverter(JSRuntime jSRuntime)
29
29
throw new JsonException ( "ByteArraysToBeRevived is empty." ) ;
30
30
}
31
31
32
- var byteArrayRef = JsonSerializer . Deserialize < ByteArrayRef > ( ref reader , options ) ;
32
+ int ? byteArrayRef = null ;
33
33
34
- if ( byteArrayRef . Id is null )
34
+ while ( reader . Read ( ) && reader . TokenType != JsonTokenType . EndObject )
35
+ {
36
+ if ( reader . TokenType == JsonTokenType . PropertyName )
37
+ {
38
+ if ( byteArrayRef is null && reader . ValueTextEquals ( ByteArrayRefKey . EncodedUtf8Bytes ) )
39
+ {
40
+ reader . Read ( ) ;
41
+ byteArrayRef = reader . GetInt32 ( ) ;
42
+ }
43
+ else
44
+ {
45
+ throw new JsonException ( $ "Unexpected JSON property { reader . GetString ( ) } .") ;
46
+ }
47
+ }
48
+ else
49
+ {
50
+ throw new JsonException ( $ "Unexpected JSON Token { reader . TokenType } .") ;
51
+ }
52
+ }
53
+
54
+ if ( byteArrayRef is null )
35
55
{
36
56
throw new JsonException ( $ "Required property { ByteArrayRefKey } not found.") ;
37
57
}
38
58
39
- if ( byteArrayRef . Id >= JSRuntime . ByteArraysToBeRevived . Count || byteArrayRef . Id < 0 )
59
+ if ( byteArrayRef >= JSRuntime . ByteArraysToBeRevived . Count || byteArrayRef < 0 )
40
60
{
41
- throw new JsonException ( $ "Byte array { byteArrayRef . Id } not found.") ;
61
+ throw new JsonException ( $ "Byte array { byteArrayRef } not found.") ;
42
62
}
43
63
44
- var byteArray = JSRuntime . ByteArraysToBeRevived . Buffer [ byteArrayRef . Id . Value ] ;
64
+ var byteArray = JSRuntime . ByteArraysToBeRevived . Buffer [ byteArrayRef . Value ] ;
45
65
return byteArray ;
46
66
}
47
67
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ public void Read_Throws_IfJsonContainsUnknownContent()
51
51
52
52
// Act & Assert
53
53
var ex = Assert . Throws < JsonException > ( ( ) => JsonSerializer . Deserialize < byte [ ] > ( json , JsonSerializerOptions ) ) ;
54
- Assert . Equal ( "Required property __byte[] not found ." , ex . Message ) ;
54
+ Assert . Equal ( "Unexpected JSON property foo ." , ex . Message ) ;
55
55
}
56
56
57
57
[ Fact ]
@@ -84,18 +84,19 @@ public void Read_ReadsJson()
84
84
}
85
85
86
86
[ Fact ]
87
- public void Read_IfByteArraysIdAppearsMultipleTimesUseLastProperty ( )
87
+ public void Read_ByteArraysIdAppearsMultipleTimesThrows ( )
88
88
{
89
89
// Arrange
90
90
var byteArray = new byte [ ] { 1 , 5 , 7 } ;
91
91
JSRuntime . ByteArraysToBeRevived . Append ( byteArray ) ;
92
92
93
93
var json = $ "{{\" __byte[]\" :9120,\" __byte[]\" :0}}";
94
94
95
- var deserialized = JsonSerializer . Deserialize < byte [ ] > ( json , JsonSerializerOptions ) ! ;
95
+ // Act
96
+ var ex = Assert . Throws < JsonException > ( ( ) => JsonSerializer . Deserialize < byte [ ] > ( json , JsonSerializerOptions ) ) ;
96
97
97
- // Act & Assert
98
- Assert . Equal ( byteArray , deserialized ) ;
98
+ // Assert
99
+ Assert . Equal ( "Unexpected JSON property __byte[]." , ex . Message ) ;
99
100
}
100
101
101
102
[ Fact ]
You can’t perform that action at this time.
0 commit comments