首页 > 解决方案 > 如何统一解析 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
             }

标签: c#wordpressunity3dunity-components

解决方案


您首先需要使类与其实体相同,然后您需要使用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;

}

推荐阅读