Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
JsonObjectDataContract.cs
Go to the documentation of this file.
3using System.Xml;
4
6
8{
9 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
14
15 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
17 {
18 string attribute = jsonReader.GetAttribute("type");
19 object obj;
20 switch (attribute)
21 {
22 case "null":
23 jsonReader.Skip();
24 obj = null;
25 break;
26 case "boolean":
27 obj = jsonReader.ReadElementContentAsBoolean();
28 break;
29 case "string":
30 case null:
31 obj = jsonReader.ReadElementContentAsString();
32 break;
33 case "number":
34 obj = ParseJsonNumber(jsonReader.ReadElementContentAsString());
35 break;
36 case "object":
37 jsonReader.Skip();
38 obj = new object();
39 break;
40 case "array":
42 default:
44 }
45 context?.AddNewObject(obj);
46 return obj;
47 }
48
49 [RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
51 {
52 jsonWriter.WriteAttributeString(null, "type", null, "object");
53 }
54
55 internal static object ParseJsonNumber(string value, out TypeCode objectTypeCode)
56 {
57 if (value == null)
58 {
60 }
61 if (value.IndexOfAny(JsonGlobals.FloatingPointCharacters) == -1)
62 {
63 if (int.TryParse(value, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out var result))
64 {
66 return result;
67 }
69 {
71 return result2;
72 }
73 }
74 if (decimal.TryParse(value, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out var result3))
75 {
76 objectTypeCode = TypeCode.Decimal;
77 if (result3 == 0m)
78 {
79 double num = XmlConverter.ToDouble(value);
80 if (num != 0.0)
81 {
82 objectTypeCode = TypeCode.Double;
83 return num;
84 }
85 }
86 return result3;
87 }
88 objectTypeCode = TypeCode.Double;
90 }
91
92 private static object ParseJsonNumber(string value)
93 {
96 }
97}
static DataContract GetDataContract(Type type)
static object ReadJsonValue(DataContract contract, XmlReaderDelegator reader, XmlObjectSerializerReadContextComplexJson context)
override object ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context)
static object ParseJsonNumber(string value, out TypeCode objectTypeCode)
override void WriteJsonValueCore(XmlWriterDelegator jsonWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle)
static SerializationException CreateSerializationException(string errorMessage)
static string XmlInvalidConversion
Definition SR.cs:312
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string JsonUnexpectedAttributeValue
Definition SR.cs:534
Definition SR.cs:7
static double ToDouble(string value)
TypeCode
Definition TypeCode.cs:4