{"country":{"code":"NZ"}}
您如何将这些数据存储在统一类中?
类似这样的东西:
using UnityEngine;
using System;
using System.Collections;
using System.Globalization;
[Serializable]
public class GDRPClass
{
public string country;
public string code;
}
我不认为这适合双{}。
谢谢
答案 0 :(得分:1)
始终是一个很好的起点:json2csharp!
只需确保使用字段而不是属性并标记起止符val adapter = AutoCompleteTextViewCustomAdapter(context!!, R.layout.list_row_text, dataList).also {
//Setup the OnClickListener what to perform when the TextView of the Adapter if being onClick
it.setListener(object : AutoCompleteTextViewCustomAdapter.IOnItemListener {
override fun onLongClick(dataReceived: String) {
// DO SOMETHING
}
override fun onSingleClick(dataReceived: String) {
// DO SOMETHING
}
})
}
// Set the adapter to the AutoCompleteTextView View that define in your XML File
autoCompleteTextView.setAdapter(adapter)
:
[Serializable]
您可以随意调用类/结构,但字段名称必须匹配!
在这种简单的情况下,由于data types in JSON的局限性非常容易解释结构。如果使用预期的符号,则可以更好地看到它
[Serializable]
public class Country
{
public string code;
}
[Serializeable]
public class GDRPClass
{
public Country country;
}
{
"country" :
{
"code" : "NZ"
}
}
总是包装一个json对象(= class / struct)。因此,您已经知道在您的情况下确实必须有两种类/结构类型。
您会看到第一个(根)类型必须有一个名为{ }
的字段。此字段的类型是其他类/结构的类型。
第二种内部类型具有另一个称为country
的字段。类型为code
。
这正是json2csharp已经为我们吐出的东西;)
现在您可以例如使用JsonUtility.FromJson
string
,然后使用例如
访问数据var json = "{\"country\":{\"code\":\"NZ\"}}";
var jsonObject = JsonUtility.FromJson<GDRPClass>(json);
答案 1 :(得分:0)
“国家” 基本上用作“ {” code“:” NZ“}” 的键,因此它们位于树的不同级别。
您可以将其反序列化为Dictionary<string, CountryInfo>
(但不能与内置的JsonUtility一起使用,因为它不执行Dictionary,所以我改用Json .Net)
看看:
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using UnityEngine;
public class TestDeserialize : MonoBehaviour {
[SerializeField] private string m_JsonStr = "{\"New Zealand\":{\"code\":\"NZ\"}}";
void Start() {
Dictionary<string,CountryInfo> result = JsonConvert.DeserializeObject<Dictionary<string, CountryInfo>>(m_JsonStr);
foreach (KeyValuePair<string,CountryInfo> country in result) { //Log results
Debug.LogFormat("{0}: {1}", country.Key, country.Value.code);
}
Debug.Log(JsonConvert.SerializeObject(result)); //Serializes back into its original form
}
[Serializable]
class CountryInfo {
public string code;
}
}
答案 2 :(得分:0)
我使用Pathfinding.Serialization.JsonFx进行Json解析
{\“ country \”:4,\“ code \”:\“阿富汗\”} [关于您的Model类,这将是jsonString]
GDRPClass data = JsonReader.Deserialize<GDRPClass>JsonWriter.Serialize(jsonString));