Как конвертировать выбранный HTML в Json?

Я хочу сохранить часть моего html-кода в json в виде файла, а затем повторно скопировать html-коды для редактирования. Любая идея, как я могу это сделать?

<div id='TextBoxesGroup'>
    <div id="TextBoxDiv1">
        <label class="draggable ui-widget-content clickableLabel" id="label1" >New Text</label>
        <input id='textbox1' class="clickedit" type="text" class="draggable" class="ui-widget-content" placeholder="Text Here"/>
        <div class="clearfix"></div>
    </div>
</div>


Я новичок в JSON, пожалуйста, если возможно, упростил. Я смотрел на другие вопросы, но они, кажется, не отвечают на мой вопрос

4 ответа

Решение

То, что вы хотите сделать, называется сериализацией.

//  This gives you an HTMLElement object
var element = document.getElementById('TextBoxesGroup');
//  This gives you a string representing that element and its content
var html = element.outerHTML;       
//  This gives you a JSON object that you can send with jQuery.ajax's `data`
// option, you can rename the property to whatever you want.
var data = { html: html }; 

//  This gives you a string in JSON syntax of the object above that you can 
// send with XMLHttpRequest.
var json = JSON.stringify(data);
function htmlToJson(div,obj){
 if(!obj){obj=[]}
 var tag = {}
 tag['tagName']=div.tagName
 tag['children'] = []
 for(var i = 0; i< div.children.length;i++){
    tag['children'].push(htmlToJson(div.children[i]))
 }
 for(var i = 0; i< div.attributes.length;i++){
    var attr= div.attributes[i]
    tag['@'+attr.name] = attr.value
 }
 return tag    
}

Я использую рекурсивную функцию, чтобы справиться с этим

from bs4 import BeautifulSoup
dic = dict()

itt = 0

def list_tree_names(node):
global itt
for child in node.contents:
    try:
        dic.update({child.name +"/"+ str(itt): child.attrs})
        itt += 1
        list_tree_names(node=child)
    except:
        dic.update({"text" +"/"+ str(itt): child})
        itt += 1


soup = BeautifulSoup(data, "html.parser")

данные это HTML-текст

list_tree_names(soup)

print(dic)

Вы можете увидеть файл JSON в https://github.com/celerometis/html2json

    var html = $('#TextBoxesGroup')[0].outerHTML;
    var temp = {"html":html}; 
    var obj  = JSON.parse(temp);
    console.log(obj); // shows json object  

Вы можете использовать любой язык на стороне сервера, чтобы сделать json из obj.

См. эту ссылку на w3school https://www.w3schools.com/code/tryit.asp?filename=FR0BHTAPG78A

mytext = document.getElementById("xx").innerHTML;
var myObj = {innerHTML:"yyy"};
myObj.innerHTML = mytext;
myJSON = JSON.stringify(myObj);

Вы можете использовать этот следующий фрагмент кода для преобразования HTML в строку JSON

var HtmlToJsonString = JSON.stringify($("#TextBoxesGroup").html());

Вы можете сохранить эту строку JSON в базе данных и редактировать время, когда вы декодируете ее и помещаете на страницу пользовательского интерфейса.

Другие вопросы по тегам