@@ -14,15 +14,60 @@ public override TableRow ReadJson(JsonReader reader, Type objectType, TableRow e
1414 while ( reader . TokenType != JsonToken . EndArray )
1515 {
1616 var jObject = JObject . Load ( reader ) ;
17- if ( jObject . Value < string > ( "type" ) == "raw_text" )
17+ var type = jObject . Value < string > ( "type" ) ;
18+ switch ( type )
1819 {
19- tableRow . Cells . Add ( new RawTextCell ( jObject . Value < string > ( "text" ) ) ) ;
20- }
21- else if ( jObject . Value < string > ( "type" ) == "rich_text" )
22- {
23- var richItem = new RichText ( ) ;
24- serializer . Populate ( jObject . CreateReader ( ) , richItem ) ;
25- tableRow . Cells . Add ( new RichTextCell ( richItem ) ) ;
20+ case "raw_number" :
21+ {
22+ var valueToken = jObject [ "value" ] ;
23+ var text = jObject . Value < string > ( "text" ) ;
24+ if ( valueToken != null )
25+ {
26+ switch ( valueToken . Type )
27+ {
28+ case JTokenType . Integer :
29+ {
30+ var intVal = valueToken . Value < int > ( ) ;
31+ if ( text != null )
32+ tableRow . Cells . Add ( new RawNumberCell ( intVal , text ) ) ;
33+ else
34+ tableRow . Cells . Add ( new RawNumberCell ( intVal ) ) ;
35+ break ;
36+ }
37+ case JTokenType . Float :
38+ {
39+ var decVal = valueToken . Value < decimal > ( ) ;
40+ if ( text != null )
41+ tableRow . Cells . Add ( new RawNumberCell ( decVal , text ) ) ;
42+ else
43+ tableRow . Cells . Add ( new RawNumberCell ( decVal ) ) ;
44+ break ;
45+ }
46+ default :
47+ {
48+ // value must be numeric; attempt a decimal conversion for other numeric-like tokens
49+ var decVal = valueToken . Value < decimal > ( ) ;
50+ if ( text != null ) tableRow . Cells . Add ( new RawNumberCell ( decVal , text ) ) ;
51+ else tableRow . Cells . Add ( new RawNumberCell ( decVal ) ) ;
52+ break ;
53+ }
54+ }
55+ }
56+
57+ break ;
58+ }
59+ case "raw_text" :
60+ {
61+ tableRow . Cells . Add ( new RawTextCell ( jObject . Value < string > ( "text" ) ) ) ;
62+ break ;
63+ }
64+ case "rich_text" :
65+ {
66+ var richItem = new RichText ( ) ;
67+ serializer . Populate ( jObject . CreateReader ( ) , richItem ) ;
68+ tableRow . Cells . Add ( new RichTextCell ( richItem ) ) ;
69+ break ;
70+ }
2671 }
2772
2873 reader . Read ( ) ;
0 commit comments