You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core向Hygraph API提交Markdown富文本报错,求解决方案

解决Hygraph富文本字段提交错误的方法

错误原因

你收到的报错提示说明,Hygraph的RichText字段要求传入包含原始富文本值的对象数组,而你当前提交的markdown格式对象不符合这个要求。Hygraph的RichText输入不支持直接传递Markdown字符串,需要转换为它指定的Raw结构。

解决方案

方案1:直接构造符合要求的Raw富文本结构

如果你的富文本内容比较简单,可以手动构造Hygraph要求的Raw格式数组:

修改变量部分代码:

Variables = new
{
    data = new
    {
        title,
        description,
        isFeatured,
        content = new
        {
            raw = new[]
            {
                new
                {
                    type = "paragraph",
                    children = new[]
                    {
                        new { text = content } // content为你的文本内容
                    }
                }
            }
        }
    }
}

方案2:将Markdown转换为Hygraph Raw格式

如果需要处理复杂的Markdown内容,可使用Markdig解析库将Markdown转换为AST,再映射为Hygraph的RichText节点结构:

  1. 安装Markdig包:
Install-Package Markdig
  1. 编写转换方法:
using Markdig.Syntax;

public static object[] ConvertMarkdownToHygraphRaw(string markdown)
{
    var document = Markdig.Markdown.Parse(markdown);
    var rawNodes = new List<object>();

    foreach (var block in document)
    {
        // 处理段落
        if (block is ParagraphBlock paragraph)
        {
            var children = new List<object>();
            foreach (var inline in paragraph.Inline)
            {
                if (inline is Markdig.Syntax.Inlines.LiteralInline literal)
                {
                    children.Add(new { text = literal.Content.ToString() });
                }
                // 处理加粗文本
                else if (inline is Markdig.Syntax.Inlines.BoldInline bold)
                {
                    children.Add(new {
                        text = bold.FirstChild.ToString(),
                        bold = true
                    });
                }
            }
            rawNodes.Add(new {
                type = "paragraph",
                children = children.ToArray()
            });
        }
        // 处理标题
        else if (block is HeadingBlock heading)
        {
            rawNodes.Add(new {
                type = $"heading-{heading.Level}",
                children = new[] { new { text = heading.Inline.ToString() } }
            });
        }
        // 可扩展处理列表、引用、图片等其他Markdown元素
    }

    return rawNodes.ToArray();
}
  1. 在mutation代码中调用转换方法:
Variables = new
{
    data = new
    {
        title,
        description,
        isFeatured,
        content = new
        {
            raw = ConvertMarkdownToHygraphRaw(content)
        }
    }
}

关键说明

  • Hygraph的RichText字段raw属性必须是对象数组,每个对象代表一个富文本块(段落、标题等),包含type和children属性,children是带样式的文本对象数组。
  • 若需支持更多Markdown语法(斜体、链接等),需在转换方法中扩展对应逻辑,映射为Hygraph支持的节点类型。

内容的提问来源于stack exchange,提问作者Rasik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:27:22