Отсутствует информация из текста в JSON

#javascript #json

Вопрос:

Я работаю над модифицированной версией этого приложения

Я добавил в программу ссылку другого типа, я хочу добавить, какого рода ссылки находятся в документе JSON, но когда я ввожу эту информацию в виде текста:

 {"nodes":
    [
    {"id":2,"title":"1","x":181,"y":146},
    {"id":3,"title":"2","x":608,"y":153},
    {"id":4,"title":"3","x":153,"y":398},
    {"id":5,"title":"4","x":548,"y":405}
    ]
,"edges":
    [
    {"source":2,"target":3,"typeLink":"arrow"},
    {"source":4,"target":5,"typeLink":"circle-full-blue"},
    {"source":5,"target":3,"typeLink":"circle_square-hollow-blue"}
    ]
}
 

В документе json, который выходит из него, отсутствует информация о «типовой ссылке» :

0: Объект { источник: {…}, цель: {…} }

Я не изменял исходный код, за исключением журнала консоли :

 d3.select("#upload-input").on("click", function(){
  document.getElementById("hidden-file-upload").click();
});
d3.select("#hidden-file-upload").on("change", function(){
  if (window.File amp;amp; window.FileReader amp;amp; window.FileList amp;amp; window.Blob) {
    var uploadFile = this.files[0];
    var filereader = new window.FileReader();

    filereader.onload = function(){
      var txtRes = filereader.resu<
      console.log("#TXT : ");
      console.log(txtRes); 
      // TODO better error handling
      try{
        var jsonObj = JSON.parse(txtRes);//missing typeLink
        console.log("#JSON : ");
        console.log(jsonObj); 
 

Комментарии:

1. Используйте JSON.parse, чтобы превратить строку в объект JS, и используйте JSON.stringify, чтобы превратить объект JS в строку.

Ответ №1:

У меня также была такая же проблема раньше, формат json в строку по какой-то причине может отсутствовать некоторая информация. Чтобы исправить это:

JSON.stringify(json) => Превратит json в строковый формат, никакой информации не пропущено

JSON.parse(string) => Превратит строку в формат json, никакой информации не пропущено

Попробуйте использовать эти функции по мере необходимости и посмотрите, сработает ли это.

Комментарии:

1. Он уже употребляет JSON.parse() . var jsonObj = JSON.parse(txtRes)

2. Ах, вы правы, извините, я этого не видел. Возможно, проблема в том, что загружаемый файл содержит JSON, который не используется JSON.stringify() при получении filereader.result недостающей информации. Попробуйте загрузить JSON в виде строки в файл, чтобы избежать этого, затем JSON.parse() вы сможете проанализировать загруженную строку, т. Е. filereader.result