我有JSON数据
{ "ResultOne":{ "Value1":2,"Value2":3,"Type":"SimpleAdd","Result":5}}
很少有其他JSON数据
{ "ResultTwo":{ "Value1":2,"Value2":3,"Type":"SimpleSubtract","Result":-1}}
{ "ResultThree":{ "Value1":2,"Value2":3,"Type":"SimpleMultiply","Result":6}}
等等。
基本上,内部JSON保持不变,而外部值不断变化。我使用json2csharp.com来生成类(以简化操作)。
public class ResultOne
{
public int Value1 { get; set; }
public int Value2 { get; set; }
public string Type { get; set; }
public int Result { get; set; }
}
public class RootObject
{
public ResultOne ResultOne { get; set; }
}
如何在C#中创建一个类来重用代码(而不是为Rootobject中的每个结果创建多个属性,可能是反射? 任何正确方向的指针都是有帮助的。感谢。
编辑: 我实际上是使用Delegate来调用服务器来获取JSON响应。
delegate Task<RootObject> Operation(int Value1, int Value2);
委托用于在下面的方法中作为变量传入。此操作opMeth将确定我们收到的结果类型。这取决于用户输入。所以我不能使用ResultOne,但需要在下面的方法中使用通用结果。
private async Task<string> DoSomeOp(int Value1, int Value2, Operation opMeth)
{
var opResult = await opMeth(Value1, Value1);
string resultValue = opResult.ResultOne.Result;
return resultValue;
}
答案 0 :(得分:1)
嗯,虽然你的JSON非常简单并且表示简单的Dictionary类型,但你可以通过使用动态来避免创建任何类:
using Newtonsoft.Json;
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var str = "{ \"ResultTwo\":{ \"Value1\":2,\"Value2\":3,\"Type\":\"SimpleSubtract\",\"Result\":-1}}";
dynamic des = JsonConvert.DeserializeObject(str);
var val = (int)des.ResultTwo.Value1;
Console.WriteLine(val);
}
}
}