Home > Net >  How to set json field name from property value in run-time .net
How to set json field name from property value in run-time .net

Time:01-10

How to serialize an object to json through setting json field name from object's property value?

I am using NewtonsoftJson as a json library.

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

expected json output:

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

CodePudding user response:

You can use a dictionary for that:

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

or if you are using Newtonsoft, you can use the JsonConvert.SerializeObject method for serialization, with the same input.

CodePudding user response:

Here is an example of how you could set the field name of a JSON object in .NET using the dynamic type:

// 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"}

In the example above, we create a dynamic object and use the [propertyValue] syntax to set the value of a field using the value of the propertyValue variable as the field name. We then use the JsonConvert.SerializeObject method to serialize the object to a JSON string.

CodePudding user response:

Just for a record

var data = new Data();

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