c# - Using custom JsonConverter to customize list reading -


i'm using json.net , want deserialize json list :

[ { "name":"blabla", "price":"50" }, { "name":"blabla", "price":"50" }, ... ] 

so i've done

list<priceitem> list = jsonconvert.deserializeobject<list<priceitem>>(json, new dictionnaryjsonconverter()); 

but want deserialize items names in line, basicly have function isnamevalid(string name) if return true put item in list , if false rid of it.

i computation in second read need have perf on function.

i've tried custom jsonconverter don't know how write list readjson function

public class customjsonconverter : jsonconverter {     public override bool canconvert(type objecttype)     {         if (objecttype == typeof(priceitem))         {             return true;         }         else if (objecttype == typeof(list<priceitem>))         {             return true;         }         throw new notimplementedexception();     }      public override object readjson(jsonreader reader, type objecttype, object existingvalue, jsonserializer serializer)     {         object obj = new object();          if (objecttype == typeof(priceitem) )         {             obj = new priceitem();             ((priceitem)obj).name = reader.readasstring();             ((priceitem)obj).price = reader.readasstring();         }         else if (objecttype == typeof(list<priceitem>))         {             // ?????         }          return obj;     }      public override void writejson(jsonwriter writer, object value, jsonserializer serializer)     {         throw new notimplementedexception();     } 

to honest, i'm not sure gain using jsonconverter here filtering. unless json absolutely huge , you're worried memory consumption, simplest way need deserialize list , filter after fact. can single line of code:

list<priceitem> list = jsonconvert.deserializeobject<list<priceitem>>(json)                                   .where(item => isnamevalid(item.name))                                   .tolist(); 

if worried memory, see this answer, shows how deserialize json list incrementally stream , process each item 1 one.


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -