У меня есть код Python, который создает для меня json в этом формате
{
"name": "Databases",
"children": [
{
"name": "Virtual prototyping",
"children": [
{
"name": "Mechanical engineering",
"children": [
{
"name": "Engineering",
"children": []
}
]
},
{
"name": "Simulation",
"children": [
{
"name": "Computer science",
"children": []
}
]
}
]
}
]
}
но мне бы хотелось, чтобы этот формат вывода в формате json был таким:
основанным узлом являются базы данных
"Машиностроение" и "Моделирование" дети «Инжиниринга».
«Моделирование» также является потомком «информатики».
«Виртуальное прототипирование» является потомком как «Машиностроения», так и «Моделирования».
Структура должен строиться динамически на основе отношений, определенных в моем наборе данных, без жесткого кодирования конкретных значений.
@app.route('/api/search', methods=['GET'])
@cache.cached(timeout=60, query_string=True)
def search_concept():
search_term = request.args.get('term')
if not search_term:
return jsonify({"error": "No search term provided"}), 400
try:
# Step 1: Fetch the main concept
with get_db_connection() as conn:
query = """
SELECT display_name
FROM concepts_filtered_fts
WHERE display_name MATCH ?;
"""
df = pd.read_sql(query, con=conn, params=[search_term])
if df.empty:
return jsonify({"message": "No results found."}), 404
results = {
"name": "databases", # Root node
"children": [] # This will hold all database nodes
}
# Process each main concept
for index, row in df.iterrows():
database_node = {
"name": row['display_name'], # Database name
"children": [] # This will hold related topics (nodes)
}
visited = set() # Set to track visited nodes
if not build_hierarchy(database_node, row['display_name'], visited):
logging.warning(f"Circular reference detected for concept: {row['display_name']}")
continue # Skip this node if circular reference is detected
results["children"].append(database_node)
return jsonify(results), 200
except Exception as e:
logging.error(f"Error in /api/search: {e}")
return jsonify({"error": str(e)}), 500
def get_related_topics(concept):
try:
with get_db_connection() as conn:
query = """
SELECT parent_display_names
FROM concepts_filtered
WHERE display_name = ?;
"""
df_related = pd.read_sql(query, con=conn, params=[concept])
if df_related.empty or df_related['parent_display_names'].iloc[0] is None:
return [] # Return empty if no parents found
related_topics = df_related['parent_display_names'].iloc[0].split(',')
return [topic.strip() for topic in related_topics] # Clean up whitespace
except Exception as e:
logging.error(f"Error fetching related topics for {concept}: {e}")
return []
Я не уверен, как мне изменить код, чтобы добиться этой структуры, и мне хотелось бы знать, как это лучше сделать, поскольку у меня более 100 000 записей?
p>
Я пробую различные изменения в своем коде Python, но мне все равно не удалось достичь желаемого формата, и вот пример ожидаемого результата
{
"name": "Databases",
"children": [
{
"name": "Engineering",
"children": [
{
"name": "Mechanical engineering",
"children": [
{
"name": "Virtual prototyping",
"children": []
}
]
}
]
},
{
"name": "Computer science",
"children": [
{
"name": "Simulation",
"children": [
{
"name": "Virtual prototyping",
"children": []
}
]
}
]
}
]
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... ith-python
Изменение формата файла JSON с помощью Python ⇐ Python
Программы на Python
-
Anonymous
1732523737
Anonymous
У меня есть код Python, который создает для меня json в этом формате
{
"name": "Databases",
"children": [
{
"name": "Virtual prototyping",
"children": [
{
"name": "Mechanical engineering",
"children": [
{
"name": "Engineering",
"children": []
}
]
},
{
"name": "Simulation",
"children": [
{
"name": "Computer science",
"children": []
}
]
}
]
}
]
}
но мне бы хотелось, чтобы этот формат вывода в формате json был таким:
основанным узлом являются базы данных
"Машиностроение" и "Моделирование" дети «Инжиниринга».
«Моделирование» также является потомком «информатики».
«Виртуальное прототипирование» является потомком как «Машиностроения», так и «Моделирования».
Структура должен строиться динамически на основе отношений, определенных в моем наборе данных, без жесткого кодирования конкретных значений.
@app.route('/api/search', methods=['GET'])
@cache.cached(timeout=60, query_string=True)
def search_concept():
search_term = request.args.get('term')
if not search_term:
return jsonify({"error": "No search term provided"}), 400
try:
# Step 1: Fetch the main concept
with get_db_connection() as conn:
query = """
SELECT display_name
FROM concepts_filtered_fts
WHERE display_name MATCH ?;
"""
df = pd.read_sql(query, con=conn, params=[search_term])
if df.empty:
return jsonify({"message": "No results found."}), 404
results = {
"name": "databases", # Root node
"children": [] # This will hold all database nodes
}
# Process each main concept
for index, row in df.iterrows():
database_node = {
"name": row['display_name'], # Database name
"children": [] # This will hold related topics (nodes)
}
visited = set() # Set to track visited nodes
if not build_hierarchy(database_node, row['display_name'], visited):
logging.warning(f"Circular reference detected for concept: {row['display_name']}")
continue # Skip this node if circular reference is detected
results["children"].append(database_node)
return jsonify(results), 200
except Exception as e:
logging.error(f"Error in /api/search: {e}")
return jsonify({"error": str(e)}), 500
def get_related_topics(concept):
try:
with get_db_connection() as conn:
query = """
SELECT parent_display_names
FROM concepts_filtered
WHERE display_name = ?;
"""
df_related = pd.read_sql(query, con=conn, params=[concept])
if df_related.empty or df_related['parent_display_names'].iloc[0] is None:
return [] # Return empty if no parents found
related_topics = df_related['parent_display_names'].iloc[0].split(',')
return [topic.strip() for topic in related_topics] # Clean up whitespace
except Exception as e:
logging.error(f"Error fetching related topics for {concept}: {e}")
return []
Я не уверен, как мне изменить код, чтобы добиться этой структуры, и мне хотелось бы знать, как это лучше сделать, поскольку у меня более 100 000 записей?
p>
Я пробую различные изменения в своем коде Python, но мне все равно не удалось достичь желаемого формата, и вот пример ожидаемого результата
{
"name": "Databases",
"children": [
{
"name": "Engineering",
"children": [
{
"name": "Mechanical engineering",
"children": [
{
"name": "Virtual prototyping",
"children": []
}
]
}
]
},
{
"name": "Computer science",
"children": [
{
"name": "Simulation",
"children": [
{
"name": "Virtual prototyping",
"children": []
}
]
}
]
}
]
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79222194/reversing-the-format-of-a-json-file-with-python[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия