如何用字符串格式表示树?

时间:2019-08-01 18:18:06

标签: javascript json xml format

让我们举个例子:

第1行:1. Rxe8+ Rxe8 2. Qxe8#第2行:1. Qxe8+ Rxe8 2. Rxe8#

我可以用JSON表示

{
  'Rxe8+': {
    'Rxe8': {
      'Qxe8#': {}
    }
  },
  'Qxe8+': {
    'Rxe8': {
      'Rxe8#': {}
    }
  }
}

您能建议一种简单的格式以字符串形式指定此组合线吗?

2 个答案:

答案 0 :(得分:0)

一个好的方法是重写JSON功能(JSON.stringify将隐式调用.toJSON),因此您可以定义一个自定义变量并使用它。

var sequence = "1. Rxe8+ Rxe8 2. Qxe8#";

function MoveList(sequence){
    this.sequence = sequence;
}
MoveList.prototype.toJSON = function(){ 
 var moveSet = {};
 var moves = this.sequence.split(" ");
 for(var i = 0; i < moves.length; i+=3){
     var moveNumber = moves[i];
     var whiteMove = moves[i+1];
     var blackMove = moves[i+2];
     moveSet[moveNumber] = {
      "White" : whiteMove
     };
     if(blackMove) moveSet[moveNumber].Black = blackMove;
 }
 return moveSet;
};

var ml = new MoveList(sequence);
var mlJson = JSON.stringify(ml);
console.log(mlJson); // As actual JSON
console.log(JSON.parse(mlJson)); // back in object form

答案 1 :(得分:-2)

由于我不太了解您的要求,因此我相信您正在寻找本机Javascript函数JSON.parse https://www.w3schools.com/js/js_json_stringify.asp

var stringifiedJson = JSON.stringify({hello: "test"});

变量stringifiedJson将返回{"hello": "test"}。 如果您正在寻找如何用文本而不是编程语言表示事物的方法,请尝试XML。 https://www.w3schools.com/xml/

<Rxe8+>
    <Rxe8>
        <Qxe8#>
        </Qxe8#>
    </Rxe8>
</Rxe8+>