嗨我在json对象中有两个字符串值。我想在同一个类中调用此方法,并使用值而不使用类。
我正在使用以下方法
public JsonResult Details()
{
return Json(new { Data = "DisplayName", result = "UniqueName" });
}
我需要在其他方法中使用此数据和结果值。
我得到了像
这样的价值 var Details = JsonConvert.SerializeObject(Details());
我的输出是{\"ContentEncoding\":null,\"ContentType\":null,\"Data\":{\"Data\":\"DisplayName\",\"result\":\"UniqueName\"},\"JsonRequestBehavior\":1,\"MaxJsonLength\":null,\"RecursionLimit\":null}
如何从中获取数据和结果值?
答案 0 :(得分:7)
您正在使用的方法,即:
public JsonResult Details()
{
return Json(new { Data = "DisplayName", result = "UniqueName" });
}
返回一个JsonResult对象,该对象具有名为" Data"的属性。即Details()。包含对象包含的数据的数据。因此,为了获得您的对象[数据和结果值],您需要再次序列化它,即
这是完整的解决方案:
JsonResult json = Details(); // return JsonResult type object
string ser = JsonConvert.SerializeObject(json.Data); // serializing JsonResult object (it will give you json string)
object dec = JsonConvert.DeserializeObject(ser); // deserializing Json string (it will deserialize Json string)
JObject obj = JObject.Parse(dec.ToString()); // it will parse deserialize Json object
string name = obj["Data"].ToString(); // now after parsing deserialize Json object you can get individual values by key i.e.
string name = obj["Data"].ToString(); // will give Data value
string name = obj["result"].ToString(); // will give result value
希望这有帮助。
答案 1 :(得分:6)
通过查看JsonConvert.SerializeObject
,我猜您使用的是NewtonSoft
dll。您可以在JObject.Parse
下Newtonsoft.Json.Linq
导入using Newtonsoft.Json.Linq;
。var details = JObject.Parse(your_json_string);
。您可以将该json字符串解析为
JObject
这将为您提供var data = details["Data"].ToString();
,您可以获取详细信息
&.
答案 2 :(得分:1)
JsonResult
已在Data
下为您存储了该对象。它还没有被序列化,它只是向MVC
框架指示在响应Web请求时将其序列化为JSON。
var details = Details().Data;
当然,这将被输入作为一个对象 - 这不是太有用。您可以将其强制转换为匿名类型,如下所示:
private T CastToAnonymous<T>(object obj, T anonymousType)
{
return (T)obj;
}
var details = CastToAnonymous(Details().Data,
new { Data = string.Empty, result = string.Empty });
然后你可以像......一样使用它。
var data = details.Data;
var result = details.result;
它将是类型安全的。