我已經用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