##// END OF EJS Templates
fixed: JSONXmlReader.Value returns invalid textual representation for numbers.
cin -
r63:908b4f340c69 default
parent child
Show More
@@ -2,6 +2,7
2 using Implab.Parsing;
2 using Implab.Parsing;
3 using System;
3 using System;
4 using System.Collections.Generic;
4 using System.Collections.Generic;
5 using System.Globalization;
5 using System.IO;
6 using System.IO;
6 using System.Linq;
7 using System.Linq;
7 using System.Text;
8 using System.Text;
@@ -37,6 +38,7 namespace Implab.JSON {
37 readonly bool m_flattenArrays;
38 readonly bool m_flattenArrays;
38 readonly string m_arrayItemName;
39 readonly string m_arrayItemName;
39 readonly XmlNameTable m_nameTable;
40 readonly XmlNameTable m_nameTable;
41 readonly bool m_disposeParser;
40
42
41 public JSONXmlReader(JSONParser parser, JSONXmlReaderOptions options) {
43 public JSONXmlReader(JSONParser parser, JSONXmlReaderOptions options) {
42 Safe.ArgumentNotNull(parser, "parser");
44 Safe.ArgumentNotNull(parser, "parser");
@@ -49,6 +51,7 namespace Implab.JSON {
49 m_flattenArrays = options.FlattenArrays;
51 m_flattenArrays = options.FlattenArrays;
50 m_arrayItemName = options.ArrayItemName ?? "item";
52 m_arrayItemName = options.ArrayItemName ?? "item";
51 m_nameTable = options.NameTable ?? new NameTable();
53 m_nameTable = options.NameTable ?? new NameTable();
54 m_disposeParser = options.DisposeParser;
52 } else {
55 } else {
53 m_prefix = String.Empty;
56 m_prefix = String.Empty;
54 m_namespaceUri = String.Empty;
57 m_namespaceUri = String.Empty;
@@ -56,6 +59,7 namespace Implab.JSON {
56 m_flattenArrays = false;
59 m_flattenArrays = false;
57 m_arrayItemName = "item";
60 m_arrayItemName = "item";
58 m_nameTable = new NameTable();
61 m_nameTable = new NameTable();
62 m_disposeParser = false;
59 }
63 }
60 }
64 }
61
65
@@ -270,7 +274,14 namespace Implab.JSON {
270 }
274 }
271
275
272 public override string Value {
276 public override string Value {
273 get { return m_parser.ElementValue == null ? String.Empty : m_parser.ElementValue.ToString(); }
277 get {
278 if (m_parser.ElementValue == null)
279 return String.Empty;
280 if (Convert.GetTypeCode(m_parser.ElementValue) == TypeCode.Double)
281 return ((double)m_parser.ElementValue).ToString(CultureInfo.InvariantCulture);
282 else
283 return (string)m_parser.ElementValue;
284 }
274 }
285 }
275
286
276 void SetLocalName(string name) {
287 void SetLocalName(string name) {
@@ -295,6 +306,7 namespace Implab.JSON {
295
306
296 protected override void Dispose(bool disposing) {
307 protected override void Dispose(bool disposing) {
297 if (disposing) {
308 if (disposing) {
309 if (m_disposeParser)
298 m_parser.Dispose();
310 m_parser.Dispose();
299 }
311 }
300 base.Dispose(disposing);
312 base.Dispose(disposing);
@@ -57,5 +57,13 namespace Implab.JSON {
57 get;
57 get;
58 set;
58 set;
59 }
59 }
60
61 /// <summary>
62 /// Флаг, означающий, что неужно освободить парсер по окончанию работы.
63 /// </summary>
64 public bool DisposeParser {
65 get;
66 set;
60 }
67 }
61 }
68 }
69 }
General Comments 0
You need to be logged in to leave comments. Login now