我喜欢这种方式,我如何在Java
中做到这一点。只需:
JSONObject obj = ...; // got by some procedure
String val_1 = obj.getString("attr_1");
int val_2 = obj.getInt("attr_2");
但我不知道C#
中是否有类似内容。在每行代码上进行类型转换都不是我想要的。 BTW。我正在使用newtonsoft.json
。
答案 0 :(得分:2)
好的,除了@Kayani的回答: 我们假设您有以下json:
{
"AttributeOne":"TestString",
"AttributeTwo":1000
}
C#中的相应类将是:
public class TestClass
{
public String AttributeOne { get; set; }
public Int32 AttributeTwo { get; set; }
}
所以你现在能做的就是:
TestClass obj = JsonConvert.DeserializeObject<TestClass>(str); //str = your json
String val_1 = obj.AttributeOne; //String
Int32 val_2 = obj.AttributeTwo; //Int
所以你不必每一行都进行投射。 如果仍然无法解决您的问题,您可以编写一些这样的扩展名:
public static class JObjectExtensions
{
public static string GetString(this JObject obj, string property)
{
return obj[property].ToString();
}
public static int GetInt(this JObject obj, string property)
{
return (int)obj[property];
}
}
并像这样使用它们:
JObject obj = JObject.Parse(str); //str == your json
String val_1 = obj.GetString("attr_1");
int val_2 = obj.GetInt("attr_2");
//or you just use the built in methods
String val_1 = obj.Value<String>("AttributeOne");
int val_2 = obj.Value<int>("AttributeTwo");
对于这些代码段,您需要导入(使用)Newtonsoft.Json
和Newtonsoft.Json.Linq
答案 1 :(得分:1)
假设您有一个类似以下的json字符串:
{"question":"what is your name","A":"x","B":"y","C":"z","D":"a"}
这里我们在json字符串中有一个MCQ类型的问题。假设我们要检索其中一个属性,例如问题。我们要做的是创建一个具有以下属性的类:
问题,A,B,C,d。假设该类名为MyQuestion
,我们将执行以下操作:
MyQuestion myQuestion = JsonConvert.DerserializeObject<MyQuestion>(jsonString);
现在您可以访问myQuestion对象的任何属性。 参考:JsonConvert