如何在运行时.net中根据属性值设置json字段名

3zwjbxry  于 2023-01-10  发布在  .NET
关注(0)|答案(3)|浏览(182)

如何通过对象的属性值设置json字段名,将对象序列化为json?
我使用NewtonsoftJson作为一个json库。

public class Data
{
  public string Question {get;set;} = "Test Question?";
  public string Answer {get;set;} = "5";
}

预期json输出:

{
  "Test Question?": {
    "Answer": "5"
  }
}
pgvzfuti

pgvzfuti1#

你可以用字典来解释:

JsonSerializer.Serialize(
    new Dictionary<string, object>
    {
        {
            data.Question, new
            {
                data.Answer
            }
        }
    });

或者,如果您使用的是Newtonsoft,则可以使用JsonConvert.SerializeObject方法进行序列化,输入相同。

jucafojl

jucafojl2#

下面是一个示例,说明如何使用动态类型在.NET中设置JSON对象的字段名:

// Define the property value and field name
string propertyValue = "fieldValue";
string fieldName = "fieldName";

// Create a dynamic object
dynamic obj = new ExpandoObject();

// Set the value of the field using the property value as the field name
obj[propertyValue] = "some value";

// Serialize the object to JSON
string json = JsonConvert.SerializeObject(obj);

// The resulting JSON will be {"fieldName": "some value"}

在上面的例子中,我们创建了一个动态对象,并使用[propertyValue]语法将propertyValue变量的值作为字段名来设置字段的值,然后使用JsonConvert.SerializeObject方法将该对象序列化为JSON字符串。

a0x5cqrl

a0x5cqrl3#

只是为了记录

var data = new Data();

string json = new JObject { [data.Question] = new JObject { ["Answer"] = data.Answer } }.ToString();

相关问题