c# - How can I make method dynamically load key/value pairs? -
how can take code , make more dynamic?
right have post json as
{ values: [{key: 'mykey', value: 'myvalue'}] }
ideally post json like:
{ values: [{make: 'car', color: 'red'}] } or { values: [{firstname: 'george', lastname: 'constanza'}] }
so tied using key/value in json.
how can dynamically load values without having use key/value?
public class myperformercontroller : apicontroller { [httpput("update/{mypath}")] public task<iactionresult> dosomething(string mypath, [frombody]mycollection values) { foreach (var val in value) { var keyvalue = val.key; var somevalue = val.value; } } } public class mycollection : ienumerable<keyvaluepair<string,string>> { public ienumerable<keyvaluepair<string, string>> values { get; set; } public ienumerator<keyvaluepair<string, string>> getenumerator() { return values.getenumerator(); } ienumerator ienumerable.getenumerator() { return getenumerator(); } }
if had structure:
[{firstname: 'george', lastname: 'constanza'}]
you can convert jarray
using jsonconvert.deserializeobject<jarray>(json);
for instance, having json:
[ { firstname: "george", lastname: "constanza" }, { firstname: "mike", lastname: "passant" }, { firstname: "john", lastname: "connor" } ]
you can iterate , key
, value
:
jarray jsonarray = jsonconvert.deserializeobject<jarray>(json); foreach (jobject item in jsonarray.children<jobject>()) { foreach (jproperty element in item.properties()) { console.writeline(string.format("key: {0}", element.name)); console.writeline(string.format("value: {0}", element.value.tostring())); } }
here can see demo.
Comments
Post a Comment