Unity JSON字符串数组从cUrl转换为对象

时间:2018-09-22 16:26:28

标签: c# arrays unity3d json-deserialization

我不确定如何做到这一点。我从这样的www请求中获得了一些用户:

Dictionary<string, string> headers = new Dictionary<string, string>();
headers.Add("Authorization", "Basic "+System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("user*pass")));
WWW www = new WWW("https://somedomain.com:8000/users", null, headers);
yield return www;
Debug.Log(www.text);  

调试返回以下内容:

[{"user_id":"ho896ty6","user_name":"Mikje Flanders","age":43},{"user_id":"ft357hj","user_name":"Anna Simpson","age":56}]

现在,我有一个像这样的对象:

public class userData
{
    string user_id;
    string user_name;
    int age;
}

我想将数据放入其中,但不确定json是数组时。我尝试过这种方法,但是没有运气:

userData thisUser = JsonUtility.FromJson<userData>(www.text);

希望有人可以帮助我,在此先感谢:-)

2 个答案:

答案 0 :(得分:1)

1)从Newtonsoft.json安装Nuget Package Manager并添加对程序的引用 像using Newtonsoft.Json;

2)这是您的用户模型类

public class User
{
    public string user_id { get; set; }
    public string user_name { get; set; }
    public int age { get; set; }
}

3)然后将json反序列化为模型,例如

class Program
{
    static void Main(string[] args)
    {
        //Sample json i get in variable
        var json = @"[{'user_id':'ho896ty6','user_name':'Mikje Flanders','age':43},{'user_id':'ft357hj','user_name':'Anna Simpson','age':56}]";

        //This line convert your string json to c# object
        List<User> userList = JsonConvert.DeserializeObject<List<User>>(json);

        //Loop through to get each object inside users list
        foreach (User user in userList)
        {
            Console.WriteLine($"user_id: {user.user_id},  user_name: {user.user_name}, age: {user.age}");
        }

        Console.ReadLine();
    }
}

输出:

enter image description here

尝试一次,可能对您有帮助。

答案 1 :(得分:0)

您将必须使用定界符来解析Json,除非在这种情况下使用Visual Studio,请在安装了此软件包的情况下检查Newtonsoft.Json的nuget,您可以:

  Using NewtonSoft.Json;

列表udat = JsonConvert.DeserializeObject>(json);

   foreach( userData data in udat){
   //do something here to each item;
   }

使用jsoneditoronline

[
  {
    "user_id": "ho896ty6",
    "user_name": "Mikje Flanders",
    "age": 43
  },
  {
    "user_id": "ft357hj",
    "user_name": "Anna Simpson",
    "age": 56
  }
]

我稍微整理了一下代码,以便您了解自己的工作。 在您的课程中添加了一些吸气剂和吸气剂...

看起来您的请求中返回了多个userData,因此您可能需要一个列表或数组。如果您需要帮助,请告诉我!

  public class userData
    {
       public string user_id {get;set;}
       public string user_name{get;set;}
       public int age{get;set;}
    }

public class userList
{
public List<userData> users{get;set;}
}