在C#中将对象转换为JSON字符串。

52

可能重复:
将C#对象转换为.NET 4中的JSON字符串

在Java中,我有一个代码将Java对象转换为JSON字符串。 在C#中如何实现相似功能?我应该使用哪个JSON库?

谢谢。

JAVA代码

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class ReturnData {
    int total;

    List<ExceptionReport> exceptionReportList;  

    public String getJSon(){
        JSONObject json = new JSONObject(); 

        json.put("totalCount", total);

        JSONArray jsonArray = new JSONArray();
        for(ExceptionReport report : exceptionReportList){
            JSONObject jsonTmp = new JSONObject();
            jsonTmp.put("reportId", report.getReportId());      
            jsonTmp.put("message", report.getMessage());            
            jsonArray.add(jsonTmp);         
        }

        json.put("reports", jsonArray);
        return json.toString();
    }
    ...
}

你应该在C#中尝试一下,并展示你正在尝试的代码。如所述,这个问题只是一个谷歌搜索的答案,没有增加任何价值。请编辑你的问题,包括你在C#中尝试过什么,以及哪些部分不起作用。 - George Stocker
@George Stocker在询问序列化的问题,而你却展示了反序列化的重复内容,为什么? - Govind Malviya
@GovindKamalaPrakashMalviya 在众多的重复内容中,我误读并选择了错误的一个。感谢你发现了这个问题。 - George Stocker
2个回答

109

我使用了Newtonsoft JSON.NET文档),它允许你创建一个类/对象,填充字段并将其序列化为JSON。

public class ReturnData 
{
    public int totalCount { get; set; }
    public List<ExceptionReport> reports { get; set; }  
}

public class ExceptionReport
{
    public int reportId { get; set; }
    public string message { get; set; }  
}


string json = JsonConvert.SerializeObject(myReturnData);

1
你好,这个答案是可行的,但是有没有一种方法将对象序列化为JavaScript格式,例如new {Name = "Myname"}将被序列化为{name: "MyName"}。谢谢。 - Lexy Feito
2
@LexyFeito 我看没有人回答你的问题。使用以下代码: var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };settings.Converters.Add(new StringEnumConverter());var json = JsonConvert.SerializeObject(myReturnData, Formatting.Indented, settings); - Kody
我已经按照这个方法成功运行,但如果数据或对象包含更多内容,则会抛出内存不足异常。如何处理? - Md Aslam
@MdAslam请遵循https://stackoverflow.com/help/how-to-ask的说明来提出新问题。 - foson

41

使用.NET内置类JavaScriptSerializer

  JavaScriptSerializer js = new JavaScriptSerializer();
  string json = js.Serialize(obj);

如何处理 'json.put("totalCount", total);'? - user595234

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接