c# - 如何统一解析 wp 登录响应的 JSON 响应
问题描述
我能够将用户凭据发布到 word press API 端点并验证登录凭据,它会返回一个 JSON,如下所示,我应该如何解析数据中的这个 JSON 对象以从以下 JSON 响应中获取 ID 的值
{
"data": {
"ID": "1",
"user_login": "jerry.abraham@kccc.come",
"user_pass": "$P$B2yv.gPx6pYXvnO6u59zkGZdUhXddddXRw.",
"user_nicename": "jerry-abrahameeee",
"user_email": "jerry.abraham@eee.com",
"user_url": "",
"user_registered": "2019-10-09 07:05:56",
"user_activation_key": "",
"user_status": "0",
"display_name": "jerry.abraham@wewewew.ae"
},
"ID": 1,
"caps": {
"administrator": true
},
"cap_key": "wp_capabilities",
"roles": ["administrator"],
"allcaps": {
"switch_themes": true,
"edit_themes": true,
"edit_others_user_registrations": true,
"publish_user_registrations": true,
"read_private_user_registrations": true,
"delete_user_registrations": true,
"delete_private_user_registrations": true,
"delete_published_user_registrations": true,
"delete_others_user_registrations": true,
"edit_private_user_registrations": true,
"edit_published_user_registrations": true,
"manage_user_registration_terms": true,
"edit_user_registration_terms": true,
"delete_user_registration_terms": true,
"assign_user_registration_terms": true,
"manage_email_logs": true,
"administrator": true
},
"filter": null
}
解决方案
您首先需要使类与其实体相同,然后您需要使用JsonUtility
将 json 字符串转换为您创建的类。我在这里使用资源文件夹中的 json 文件做了一个示例,以明确您需要如何读取这些数据,如下所示:
using UnityEngine;
using System;
using System.IO;
using System.Text;
using System.Globalization;
public class ReadJson : MonoBehaviour
{
public ContainJson classeFromJson;
// Start is called before the first frame update
void Start()
{
ReadJsonFromResources();
}
public void ReadJsonFromResources()
{
string json = "";
using (StreamReader r = new StreamReader("./Assets/Resources/PlaceHolderJSON/data.json", Encoding.GetEncoding(CultureInfo.GetCultureInfo("pt-BR").TextInfo.ANSICodePage)))
{
json = r.ReadToEnd();
}
ContainJson containJson = JsonUtility.FromJson<ContainJson>(json);
classeFromJson = containJson;
}
}
[Serializable]
public class ContainJson
{
public Data data;
public int ID;
public Caps caps;
public string cap_key;
public string[] roles;
public AllCaps allcaps;
public string filter;
}
[Serializable]
public class Data
{
public string ID;
public string user_login;
public string user_pass;
public string user_nicename;
public string user_email;
public string user_url;
public string user_registered;
public string user_activation_key;
public string user_status;
public string display_name;
}
[Serializable]
public class Caps
{
public bool administrator;
}
[Serializable]
public class AllCaps
{
public bool switch_themes;
public bool edit_themes;
public bool edit_others_user_registrations;
public bool publish_user_registrations;
public bool read_private_user_registrations;
public bool delete_user_registrations;
public bool delete_private_user_registrations;
public bool delete_published_user_registrations;
public bool delete_others_user_registrations;
public bool edit_private_user_registrations;
public bool edit_published_user_registrations;
public bool manage_user_registration_terms;
public bool edit_user_registration_terms;
public bool delete_user_registration_terms;
public bool assign_user_registration_terms;
public bool manage_email_logs;
public bool administrator;
}
推荐阅读
- azure-devops-server-2019 - 将 Azure Devops Server 2019 升级到 Azure Devops Server 2020
- laravel - 如何在 Vue.js 和 Laravel 中上传文件数组?
- c++ - C ++加法运算符多次重载
- node.js - 在node.js api中出现套接字异常错误端口一直需要清除本地地址上的路由
- javascript - LoadFromJson 不工作/在使用织物文本上传后忽略对象属性
- html - 移动/桌面上的 Bootstrap 4 排序列
- python - 考虑到国家/地区的当地货币,如何将表示货币值的字符串转换为 Python Decimal 对象?
- scala - Int 上的匹配表达式并不详尽
- python - 如何按键对 Python 字典进行排序?
- python - 枚举列表的字符串元素