如何将自定义字符串数据转换为json并逐个获取数据

时间:2018-04-17 10:25:44

标签: c# arrays json string unity3d

这是我的字符串数据:

[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

Image here

红色圆圈是我的"2",蓝色圆圈是我的字符串数据中的"1"

2 个答案:

答案 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);
}

虽然这可以解决你问题中的问题,但我建议你使用数组或列表来表示这些数据,除非你有充分的理由这样做,然后去做。