JSON解析错误:缺少对象成员的名称

law*_*man 5 c# json json-deserialization

我是json的新手并试图让一个基本的例子工作.

我的http请求会返回{'username':'1'},{'username':'1'}.

我对于什么是有效的json看起来很困惑,但是如何将它变成一个字符串变量来反序列化.

由于ToJson返回{'username':'1'},我认为正确的做法是用双引号将其转换回来.

我显然错过了一些东西!

class DataItem{

    public string username;
}

string json = "{'username': '1'}";

deserialized = JsonUtility.FromJson<DataItem>(json);
Run Code Online (Sandbox Code Playgroud)

错误:ArgumentException:JSON解析错误:缺少对象成员的名称.

小智 7

尝试使用双引号(") 来定义键。

也许下面的参考资料可能有用。

https://www.rfc-editor.org/rfc/rfc7159#page-12


law*_*man 6

通过非常有用的回答,我发现了我所缺少的内容.

// Temp Data Struct
class DataItem{
    public string username;
    }

//Valid Json look like : {"username": "1"}

//Valid Json must be double quoted again when assigned to string var
// or escaped if you want 'valid' Json to be passed to the FromJson method
//string json = "{\"username\": \"1\"}"; or

string json = @"{""username"": ""1""}";

DataItem deserialized = JsonUtility.FromJson<DataItem>(json);

Debug.Log("Deserialized "+ deserialized.username);
Run Code Online (Sandbox Code Playgroud)

返回'反序列化1'

非常基本的东西,但感谢帮助我理解它!