我已经用Json.NET实现了JSON-RPC。我转换的响应结果如下:如何在C#中动态地转换Json.NET解析的JSON结果?
T data = ((JToken)value).ToObject<T>();
如果结果是对象,则此工作。但是如果结果是像Int64或字符串这样的基元,它就不起作用。那么价值不是一个JToken。
我已经找到了方法:
static object Convert(object initialValue, CultureInfo culture, Type targetType)
这似乎做必要的工作。但类ConvertUtils是内部的。它有任何公共的方法来转换任何解析的JSON结果到任何目标类型?
更完全样品与JSON-RPC处理:
JsonRpcResult result = serializer.Deserialize<JsonRpcResult>(jsonTextReader);
Type type = requests[result.id];
object value = result.result;
return ((JToken)value).ToObject(type);
典型的JSON字符串:
{"jsonrpc":"2.0","result":DynamicValidJsonDependsOnID,"id":1}
DynamicValidJsonDependsOnID的JSON内容取决于ID和可以是任何有效JSON。没有限制。
类JsonRpcResult:
[JsonObject(MemberSerialization.Fields)]
internal class JsonRpcResult
{
private string jsonrpc;
private object result;
private Dictionary<String,Object> error;
private object id;
}
怎么样使用'Newtonsoft.Json.Linq.JObject.Parse (字符串json)' –
不知道我理解你的要求。您是否在寻找['Convert.ChangeType()'](https://msdn.microsoft.com/en-us/library/ms130977(v = vs.110).aspx)? – dbc
@IswarKChettri JSON已经被解析,我已经有了一个JObject。但是也可以是Int64或null。查看更详细的示例。我可以在完全解析后转换结果,因为我需要首先响应的“id”。 – Horcrux7