我有这个称为受让人的JSON字符串:
{
"id": 15247055788906,
"gid": "15247055788906",
"name": "Bo Sundahl",
"resource_type": "user"
}
如果不为null,我想获取“名称”元素及其值。我尝试过
var jobject = JsonConvert.DeserializeObject<JObject>(assignee);
还有
var jo = JObject.Parse(assignee);
我尝试遍历它,但是即使我仅打印受让人变量本身填充的数据,也只会得到空异常或空输出。
我的循环就像:
foreach (var result in jobject["name"])
{
Debug.WriteLine(result);
}
答案 0 :(得分:3)
最简单,最好的方法是反序列化为C#类,例如:
public class Data
{
public long Id { get; set; }
public string Name { get; set; }
//etc..
}
像这样反序列化
var data = JsonConvert.DeserializeObject<Data>(json);
var name = data.Name;
答案 1 :(得分:1)
要获取名称,请使用
string name = jobject["name"];
答案 2 :(得分:0)
使用["name"]
返回一个JToken
,如果该属性不存在,则为null
JToken token = jo["name"];
Debug.WriteLine(token?.ToString() ?? "<default value>");
答案 3 :(得分:0)
如果您事先不知道属性,则可以遍历JObject属性并按以下方式获取名称值对:
var jsonObject = JObject.Parse(str);
foreach (var item in jsonObject)
{
var name = item.Key;
JToken token = item.Value;
if (token is JValue)
{
var value = token.Value<string>();
}
}
答案 4 :(得分:0)
这是它应该如何工作的:
class Data
{
public long? Id { get; set; }
public string Gid { get; set; }
public string Name { get; set; }
public string Resource_Type { get; set; }
}
class Program
{
static void Main(string[] args)
{
string assignee = "{\"id\": 15247055788906, \"gid\": \"15247055788906\", \"name\": \"Bo Sundahl\", \"resource_type\": \"user\"}";
Data data = JsonConvert.DeserializeObject<Data>(assignee);
Console.WriteLine(data.Id);
Console.WriteLine(data.Gid);
Console.WriteLine(data.Name);
Console.WriteLine(data.Resource_Type);
Console.ReadLine();
}
}