- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下 JToken 输出。我如何从 TenantID 中检索此处的“值”,在这种情况下应为 1?
{[
{
"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}
]}
这是我当前的代码:
JToken value;
if (usr.Profile.TryGetValue("tenantid", out value))
{
JObject inner = value["value"].Value<JObject>(); //not working with null error
User.TenantID = (string)value;
}
User.obj = usr.Profile;
编辑 - 请在下面找到完整的 JToken 输出:
{[
{
"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}
]}
Count: 1
First (Newtonsoft.Json.Linq.JContainer): {{
"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}}
First (Newtonsoft.Json.Linq.JToken): {{
"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}}
HasValues: true
IsReadOnly: false
Last (Newtonsoft.Json.Linq.JContainer): {{
`"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}}
Last (Newtonsoft.Json.Linq.JToken): {{
"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}}
Next: (null)
Parent: {"tenantid": [
{
"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}
]}
Path: "tenantid"
Previous: (null)
Static members:
Non-public members:
IEnumerator:
Root: {{
"name": "Rx Sidhu",
"given_name": "Rx",
"family_name": "Sidhu",
"locale": "en_US",
"emails": [
"ranxdeep@xxx.com",
"ranxdeep@xxx.com",
"ranxdeep@hx.com"
],
"nickname": "ranxdeep@xxx.com",
"email": "ranxdeep@xxx.com",
"picture": "https://apis.live.net/v5.0/f1xxxxxx/picture",
"roles": [
"Account Admin",
"Admin"
],
"tenantid": [
{
"value": 1,
"metadata": {
"userType": 0,
"flags": 8,
"type": {
"type": "INT4",
"name": "Int",
"id": 56
},
"colName": "TenantID"
}
}
],
"email_verified": true,
"clientID": "wxxxvC8",
"updated_at": "2015-07-15T16:26:30.526Z",
"user_id": "windowslive|f1axxxac",
"identities": [
{
"access_token": "EwBwAq1",
"provider": "windowslive",
"user_id": "f1aexxxxxac",
"connection": "windowslive",
"isSocial": true
}
],
"created_at": "2015-07-01T06:08:21.358Z"
}}
Type: 2
我需要检查 tenantID 是否实际存在然后获取值,否则返回 null 或 0。
最佳答案
你应该能够做到:
JObject jObject = JObject.Parse(...);
JToken value = jObject.SelectToken("value");
您解析您的对象
,然后应该公开内部内容,您可以在其中利用SelectToken
方法找到该特定值。
要进一步构建它,您可以这样做:
public static JToken FindToken<T>(string key, T value)
{
string serialized = NewtonsoftJsonSerializer.Instance.Serialize(value);
var jObject = JObject.Parse(serialized);
var jToken = jObject.SelectToken(key);
if(jToken != null)
return jToken;
return null;
}
关于c# - JToken 获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434859/
我有以下 Json { "error": { "errors": [ { "domain": "global", "reason": "requ
我有以下... JArray clients = (JArray)clientsParsed["objects"]; foreach (JObject item in clients.Children
JToken.ToObject() 之间有什么区别?方法和 JToken.Value()扩展方法(没有 key 参数的方法)? var jToken = JToken.Parse("123"); va
我有以下 JToken 输出。我如何从 TenantID 中检索此处的“值”,在这种情况下应为 1? {[ { "value": 1, "metadata": { "userType"
我有一个包含参数/值对的 JObject(例如“param1”:“aValue”)。我想根据数据网格中捕获的数据更新这些值。 然后根据定义以下类型的 JSON 架构验证参数值:“字符串”、“整数”和“
假设我有以下 JToken: @"{ ""data"": [ { ""company"": { ""ID"": ""12
我有一个值为 {1234} 的 JToken 如何将其转换为整数值,如 var totalDatas = 1234; var tData = jObject["$totalDatas"]; int t
我有一个 JObject,我想为它设置一个强类型对象的属性。 JObject["ProductionVersion"] = new ProductionVersion(); 为此,需要将 Produc
我有一个 json JTokens 列表: List subjectresults = jObj[jp]["subjects"].Children().ToList(); 请注意,我的 jp 是 va
作为我的问题的后续行动: JSON.NET: Obtain JObject from JProperty Value ... 我阅读了链接并消化了上述评论和建议。现在我想知道:为什么没有“直接”(即简
这是我的情况: 我有一个解析为 JObject 的 JSON 字符串。 JObject jObject = JObject.Parse(json); 我跳转到 JSON 中的“白名单”标记 JToke
这是我的情况: 我有一个解析为 JObject 的 JSON 字符串。 JObject jObject = JObject.Parse(json); 我跳转到 JSON 中的“白名单”标记 JToke
我正在尝试动态查找结构事先未知的 JSON 对象的叶节点名称。首先,我将字符串解析为 JTokens 列表,如下所示: string req = @"{'creationRequest
我有以下JToken: { "ID": "9dbefe3f5424d972e040007f010038f2" } 但每当我在 JToken 对象上运行 ToString() 以获取字符串形式的
在收到来自 API 的响应后,我有以下信息: JObject goatHerd = JObject.Parse(responseString); JToken goat = goatHerd["val
如何将这两个 JToken 合并为一个 JToken。这听起来应该很简单,但我无法绕过它。 { "data":[ { "ID":"53a1862000404a304942546b3
我想比较两个相同类型和结构的任意 JTokens(NewtonSoft 的 Json.Net)。 static int CompareTokens(JToken x, JToken y); // p
我从返回 JSON 响应的 Web 服务获取数据。这是我的代码: WebClient client = new WebClient(); var result = client.DownloadSt
我正在尝试更新 JToken 的值,但它的引用没有得到更新。 JSON 字符串: { "Title": "master", "Presentation": [ {
我想将 JToken 内容反序列化为一个对象(User)。我怎么能做到这一点? 这是我的 json 字符串: string json = @"[{""UserId"":0,""Username"":"
我是一名优秀的程序员,十分优秀!