这是我的字符串数据:
[1,1,1,2,1,1,1,2,1,3,1,1,1,2,1,3]
我将我的字符串数据转换为json,我就像这样做了
string jsonString = "[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]";
private void Start()
{
ExampleClass dataParser = new ExampleClass();
dataParser.dataToParse = jsonString;
//Convert to Json
string exampleClassToJson = JsonUtility.ToJson(dataParser);
Debug.Log(exampleClassToJson);
}
}
[Serializable]
public class ExampleClass
{
public string dataToParse;
}
并且在这里成功转换了它的输出:
{"dataToParse":"[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]"}
现在我的问题是如何逐一获取这些数据?请有人帮帮我。
我在这里要做的是制作一个像这样的ScoreBoard
红色圆圈是我的"2"
,蓝色圆圈是我的字符串数据中的"1"
。
答案 0 :(得分:2)
更改json:
{"dataToParse":"[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]"}
到
{"dataToParse": [1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1] }
然后将课程更改为:
[Serializable]
public class ExampleClass
{
public List<int>dataToParse;
}
您可以通过索引或迭代访问:
foreach(int i in dataToParse)
{
int temp = i;
CreateScore(temp);
}
编辑: 根据你关于如何转换json字符串的最后一条评论,我会让系统处理它并保持简单。
创建ExampleClass的实例并填充值。然后让JsonUtility完成剩下的工作。
void Start()
{
ExampleClass ec = new ExampleClass();
ec.dataToParse = new List<int>(){1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1};
string json = JsonUtility.ToJson(ec);
}
答案 1 :(得分:2)
真的有可能。循环遍历dataToParse
变量。确保循环从1
代替0
开始。另外,请确保循环以dataToParse.Length - 1
而不是dataToParse.Length;
结尾。这将删除[
和]
。
在循环中,将计数器增加3
而不是通常的1
。通过这样做,它还将删除放在json中每个值之后的“,”和“”。您可以在循环中将每个值作为char
获取,可以将其转换为您希望的任何值类型。
ExampleClass obj = JsonUtility.FromJson<ExampleClass>(exampleClassToJson);
//Loop over it
for (int i = 1; i < obj.dataToParse.Length - 1; i += 3)
{
char indivisualChar = obj.dataToParse[i];
Debug.Log(indivisualChar);
}
虽然这可以解决你问题中的问题,但我建议你使用数组或列表来表示这些数据,除非你有充分的理由这样做,然后去做。