Как вернуть строку JSON из записи в часовне? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть некоторые записи DTO, определенные как

record NodeDTO{
  var id: int,
      name: string,
      community: int;
}

record LinkDTO {
  var source: int,
      target: int,
      strength: real;
}

record GraphDTO {
  var nodes:[1..0] NodeDTO,
      links:[1..0] LinkDTO;
  proc init() {}
}

proc Graph.DTO() {
  var dto = new GraphDTO();
  for key in this.verts.keys {
    dto.nodes.push_back(new NodeDTO(id=this.verts.get(key), name=key, community=1));
    for nbs in this.neighbors(key).keys {
      dto.links.push_back(new LinkDTO(source=this.verts.get(key), target=this.verts.get(nbs), strength=1.0));
    }
  }
  return dto;
}

Но когда я writeln(dto), я получаю

(nodes = (id = 7, name = yondu, community = 1) (id = 1, name = star lord, community = 1) (id = 5, name = rocket, community =
 1) (id = 4, name = drax, community = 1) (id = 8, name = nebula, community = 1) (id = 3, name = groot, community = 1) (id = 2, name = gamora,
community = 1) (id = 6, name = mantis, community = 1), links = (source = 7, target = 8, strength = 1.0) (source = 1, target = 4, strength = 1.
0) (source = 1, target = 3, strength = 1.0) (source = 1, target = 2, strength = 1.0) (source = 5, target = 6, strength = 1.0) (source = 4, tar
get = 5, strength = 1.0) (source = 3, target = 4, strength = 1.0) (source = 2, target = 4, strength = 1.0) (source = 6, target = 7, strength =
 1.0) (source = 6, target = 8, strength = 1.0))

, что не будет правильно интерпретироваться как JSON.Я отправляю это в браузер, используя Chrest в качестве веб-сервера.Как мне получить это, чтобы заключать в кавычки строки и делать все приятные вещи JSONy?

1 Ответ

0 голосов
/ 30 мая 2018

В настоящее время форматированный ввод-вывод Chapel включает поддержку JSON.(Обратите внимание, что в будущем это, вероятно, будет сделано для улучшения интерфейса).См. раздел общих преобразований в отформатированной документации ввода-вывода .Обратите внимание, что вы можете использовать string.format , readf и writef для доступа к форматированному вводу / выводу.

В вашем конкретном случае string.format, вероятно, то, что вы хотите - например, "%jt\n".format(dto).

...