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