我被困在某事上:
我使用JObject.Load反序列化了一个JSON文件:
// get the JSON into an object
JObject jsonObject = JObject.Load(new
JsonTextReader(new StreamReader("mydoc.json")));
Run Code Online (Sandbox Code Playgroud)
精细.我现在有一个填充jsonObject.
现在我遍历它的属性,如下所示:
foreach (JProperty jsonRootProperty in jsonObject.Properties())
{
if (jsonRootProperty.Name=="Hotel")
{
... !!! I just want a JObject here...
}
}
Run Code Online (Sandbox Code Playgroud)
一旦我找到名称等于"Hotel"的属性,我希望该属性的值为JObject.问题是酒店属性名称可能是单个值(例如,字符串),或者它可能是JSON对象或JSON数组.
如何将属性的值转换为JObject变量,以便将其传递给另一个接受JObject参数的函数?
获取Value的JProperty,这是一个JToken,看它Type.此属性将告诉您令牌是否为Object,Array,String等.如果令牌类型为Object,则可以将其简单地转换为a JObject并将其传递给您的函数.如果令牌类型不是Object而你的函数必须有a JObject,那么你需要将值包装在a JObject中以使其工作.
foreach (JProperty jsonRootProperty in jsonObject.Properties())
{
if (jsonRootProperty.Name=="Hotel")
{
JToken value = jsonRootProperty.Value;
if (value.Type == JTokenType.Object)
{
FunctionThatAcceptsJObject((JObject)value);
}
else
{
FunctionThatAcceptsJObject(new JObject(new JProperty("value", value)));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7602 次 |
| 最近记录: |