Javascript 反序列化c中的嵌套json对象#
我在javascript中有json对象作为Javascript 反序列化c中的嵌套json对象#,javascript,c#,json,Javascript,C#,Json,我在javascript中有json对象作为 {"CategoryID":"1","CountryID":"1","CountryName":"United Arab Emirates", "BillerID":"23","AccountNo":"1234567890", "Authenticators":"{\"ConsumerNumber\":\"1234567890\",\"LastBillDate\":\"14-10-2014\",\"LastBillDueDate\":\"24-11-
{"CategoryID":"1","CountryID":"1","CountryName":"United Arab Emirates",
"BillerID":"23","AccountNo":"1234567890",
"Authenticators":"{\"ConsumerNumber\":\"1234567890\",\"LastBillDate\":\"14-10-2014\",\"LastBillDueDate\":\"24-11-2014\"}",
"ShortName":"0000000001"}
我的c#class与
我可以用c#as获得每个元素的值
这样我就可以得到每个验证器元素的每个值
string value = obj.ConsumerNumber;
我想用值填充两个类。如何实现相同的功能?反序列化外部对象后,可以对Authenticators JSON字符串运行另一个反序列化,该字符串现在是obj1
上的属性
这是必需的,因为验证器是一个字符串,它是转义的,因此在反序列化外部对象之前无法反序列化
Authenticators obj2 = Deserialize<Authenticators>(obj1.Authenticators);
string value = obj2.ConsumerNumber;
Authenticators obj2=反序列化(obj1.Authenticators);
字符串值=obj2.ConsumerNumber;
您的UserContext类有一个字符串字段验证器,而json结构表明它是一个对象
改变
public string Authenticators { get; set; }
到
然后可以反序列化UserContext对象以及嵌套的对象身份验证器
UserContext obj1 = Deserialize<UserContext>(context);
var consumerNumber = obj1.Authenticators.ConsumerNumber;
应该是这样的:
var data =
{
CategoryID:"1",
Authenticators:{ConsumerNumber:"1234567890"}
};
var json = JSON.stringify(data);
换衣服
public string Authenticators { get; set; }
到
然后,您可以通过以下方式访问内部对象的属性
var number = obj1.Authenticators.ConsumerNumber;
但是我注意到在使用Newtonsoft反序列化JSON时出现了一些问题,我不得不将JSON字符串中的验证器值更改为
'Authenticators':{'ConsumerNumber':'1234567890','LastBillDate':'14-10-2014','LastBillDueDate':'24-11-2014'},
只需删除反斜杠如果我的json字符串不包含验证器
,该怎么办?一些错误处理机制?您可以在第二次反序列化之前添加一个条件,以检查验证器字符串是否包含一个值:if(obj1.Authenticators!=''{}
。如果您认为该值可能并不总是有效的JSON字符串,则可以使用try-catch。执行lineAuthenticators obj2=反序列化(obj1.Authenticators)时,路径中的异常非法字符。
代码>则您的验证器字符串不是有效的JSON。反序列化外部对象后,请尝试打印它以查看它包含的内容。然后如何提取ConsumerNumber
?它会出现异常无法将类型为“System.String”的对象转换为类型为“MyWebApplication.App\u code.Authenticators”
的第行UserContext obj1=反序列化(context1)代码>这不起作用。验证器是一个字符串。反序列化不会将其转换为对象,因为JSON被转义。@GeorgePolevoy,谢谢,但我的一个变量将需要所有三个变量值,即单个变量中的“{\”ConsumerNumber\:\“1234567890\”,“LastBillDate\:“14-10-2014\”,“LastBillDueDate\”:“24-11-2014\”
。我怎样才能得到那个值呢?恐怕我不能改变javascript中json字符串的结构!
var data =
{
CategoryID:"1",
Authenticators: JSON.stringify({ConsumerNumber:"1234567890"})
};
var json = JSON.stringify(data);
var data =
{
CategoryID:"1",
Authenticators:{ConsumerNumber:"1234567890"}
};
var json = JSON.stringify(data);
public string Authenticators { get; set; }
public Authenticators Authenticators { get; set; }
var number = obj1.Authenticators.ConsumerNumber;
'Authenticators':{'ConsumerNumber':'1234567890','LastBillDate':'14-10-2014','LastBillDueDate':'24-11-2014'},