将字符串转换为json C#
我有我正在使用的示例代码。json是http post的结果将字符串转换为json C#,c#,json,C#,Json,我有我正在使用的示例代码。json是http post的结果 var json = @"{'user': { 'country':'US', 'email':'testapi@example.com', 'first_name':'Test', 'last_name':'API',
var json = @"{'user': {
'country':'US',
'email':'testapi@example.com',
'first_name':'Test',
'last_name':'API',
'phone':null,
'zip':null,
'login_url':'https://new.site.com/xlogin/12325/abd9832cd92'
}
}";
var jsonSerializer = new JavaScriptSerializer();
var itemsList = (IDictionary<string, object>)jsonSerializer.DeserializeObject(json);
var url = itemsList["user.login_url"];
我做错什么了吗?我应该如何从该对象访问名字、姓氏和url等?
或者,如何将此结果绑定到具有以下属性的类?我只需要一个指向好资源的指针
public class User
{
public string Country { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Zip { get; set; }
public string LoginUrl { get; set; }
}
谢谢 “user.login\u url”是您希望在JavaScript中使用的属性路径。。。请尝试访问字典键
var user = itemsList["user"] as IDictionary<string,object>;
var url = user["login_url"] as string;
var user=itemsList[“user”]作为IDictionary;
var url=user[“login\u url”]作为字符串;
“user.login\u url”是您希望在JavaScript中使用的属性路径。。。请尝试访问字典键
var user = itemsList["user"] as IDictionary<string,object>;
var url = user["login_url"] as string;
var user=itemsList[“user”]作为IDictionary;
var url=user[“login\u url”]作为字符串;
尝试使用它将为您提供一个包含所需类型的词典。尝试使用它将为您提供一个包含所需类型的词典。项目列表[“用户”]包含第二个词典。因此,您可以使用
var user = (IDictionary<string, object>)itemsList["user"];
var login_url = user["login_url"];
var user=(IDictionary)itemsList[“user”];
var login_url=user[“login_url”];
itemsList[“用户”]包含第二个字典。因此,您可以使用
var user = (IDictionary<string, object>)itemsList["user"];
var login_url = user["login_url"];
var user=(IDictionary)itemsList[“user”];
var login_url=user[“login_url”];
我真的不明白为什么要用IDictionary解析json对象
using System;
using Newtonsoft.Json;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var json = @"{'user': {
'country':'US',
'email':'testapi@example.com',
'first_name':'Test',
'last_name':'API',
'phone':null,
'zip':null,
'login_url':'https://new.site.com/xlogin/12325/abd9832cd92'
}
}";
RootObject userObj = JsonConvert.DeserializeObject<RootObject>(json.ToString());
}
}
//generated with http://json2csharp.com/
public class User
{
public string country { get; set; }
public string email { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public object phone { get; set; }
public object zip { get; set; }
public string login_url { get; set; }
}
public class RootObject
{
public User user { get; set; }
}
}
使用系统;
使用Newtonsoft.Json;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
var json=@“{'user':{
‘国家’:‘美国’,
“电子邮件”:testapi@example.com',
“名字”:“测试”,
“姓氏”:“API”,
“电话”:空,
“zip”:null,
'登录url':'https://new.site.com/xlogin/12325/abd9832cd92'
}
}";
RootObject userObj=JsonConvert.DeserializeObject(json.ToString());
}
}
//产生于http://json2csharp.com/
公共类用户
{
公共字符串国家{get;set;}
公共字符串电子邮件{get;set;}
公共字符串first_name{get;set;}
公共字符串last_name{get;set;}
公共对象电话{get;set;}
公共对象zip{get;set;}
公共字符串登录\u url{get;set;}
}
公共类根对象
{
公共用户{get;set;}
}
}
我真的不明白为什么要用IDictionary解析json对象
using System;
using Newtonsoft.Json;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var json = @"{'user': {
'country':'US',
'email':'testapi@example.com',
'first_name':'Test',
'last_name':'API',
'phone':null,
'zip':null,
'login_url':'https://new.site.com/xlogin/12325/abd9832cd92'
}
}";
RootObject userObj = JsonConvert.DeserializeObject<RootObject>(json.ToString());
}
}
//generated with http://json2csharp.com/
public class User
{
public string country { get; set; }
public string email { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public object phone { get; set; }
public object zip { get; set; }
public string login_url { get; set; }
}
public class RootObject
{
public User user { get; set; }
}
}
使用系统;
使用Newtonsoft.Json;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
var json=@“{'user':{
‘国家’:‘美国’,
“电子邮件”:testapi@example.com',
“名字”:“测试”,
“姓氏”:“API”,
“电话”:空,
“zip”:null,
'登录url':'https://new.site.com/xlogin/12325/abd9832cd92'
}
}";
RootObject userObj=JsonConvert.DeserializeObject(json.ToString());
}
}
//产生于http://json2csharp.com/
公共类用户
{
公共字符串国家{get;set;}
公共字符串电子邮件{get;set;}
公共字符串first_name{get;set;}
公共字符串last_name{get;set;}
公共对象电话{get;set;}
公共对象zip{get;set;}
公共字符串登录\u url{get;set;}
}
公共类根对象
{
公共用户{get;set;}
}
}
您在img中隐藏了您的URL,但将其保留在代码中—“登录URL”:“json中的URL错误,这就是我将其保留在那里的原因。您在img中隐藏了您的URL,但将其保留在代码中—“登录URL”:“json中的URL错误,这就是我将其保留在那里的原因。这导致无法使用[]应用索引对于“object”类型的表达式,修复了代码-我没有从用户键强制转换到IDictionary,这对我有效。由于另一方面的原因,我的最后期限很紧,所以我也会同意这一点,并对其进行投票。我将把这个标记为答案。稍后我将查看json.net并尝试这样做。这导致无法使用[]对“object”类型的表达式应用索引修复了代码-我没有从用户键转换到IDictionary这对我有效。由于另一方面的原因,我的最后期限很紧,所以我也会同意这一点,并对其进行投票。我将把这个标记为答案。稍后我将查看json.net,并尝试这样做。这并不能回答问题。@mason如果使用此库,他将不会面临此问题。库本身将结果放入字典中,他将能够访问字典中的值(这基本上是更好/更快地读取/写入JSON的方法)。我知道什么是JSON.NET,以及它是如何工作的。但是如果有人问你如何建造一座房子,你不会说“这是一把锤子,它可以做你想做的。”仅仅建议使用这个工具是不够的,你需要解释如何使用这个工具。即使他按照你的建议切换到JSON.NET,他也可能会使用不正确的语法itemsList[“user.login\u url”]
,除非你解释这是不对的。@梅森你可能是对的,但我只是帮他弄到了一个