【发布时间】:2021-09-16 21:03:20
【问题描述】:
我们如何在 json 下面按 'FieldName' 排序?就像按“FieldName”排序到 asc/desc。它是一个字符串值。
Json:
{
"Information": [
{
"FieldName": "Area04",
"Draft": "Unknown",
},
{
"FieldName": "Area02",
"Draft": "Unknown",
},
{
"FieldName": "Area01",
"Draft": "Unknown",
},
{
"FieldName": "Area03",
"Draft": "Unknown",
}
],
"OtherInfo": []
}
Code:
static void Main(string[] args)
{
string _json = "{'Information': [{'FieldName': 'Area04','Draft': 'Unknown'},{'FieldName': 'Area02','Draft': 'Unknown'},{'FieldName': 'Area01','Draft': 'Unknown'},{'FieldName': 'Area03','Draft': 'Unknown'}],'OtherInfo': []}";
var jObj = JsonConvert.DeserializeObject<Informat>(_json);
var test1 = jObj.Information.OrderBy(x => x.FieldName);
string ss = JsonConvert.SerializeObject(test1);
}
Class:
public class Informat
{
public Information[] Information { get; set; }
public object[] OtherInfo { get; set; }
}
public class Information
{
public string FieldName { get; set; }
public string Draft { get; set; }
}
请检查并告诉我,订购它时我不会想到任何事情,我也尝试使用几个 stackover flow 答案,它不适用于我的 json 对象。我尝试使用上面的代码并得到异常'无法反序列化当前的 JSON 对象'。
【问题讨论】:
-
到目前为止,您自己尝试过什么?你遇到了什么问题?你研究了什么?简单的
.OrderBy(e=>e.FieldName)有什么不适用的?我推荐阅读how to ask a good question 和what's on topic。 -
@FranzGleichmann- 抱歉,我已经添加了我尝试使用的代码并得到异常“无法反序列化当前 JSON 对象”。我也尝试过其他代码,我已经丢失了它们并且无法回忆。请检查。
-
嗯,从您的错误消息来看,您的实际问题根本不是关于订购数据,而是关于反序列化您的字符串。另外:如果您的
string _json包含实际内容(它与您进一步提供的内容不同),那么您的问题之一 - 它是 not 有效的 JSON(单引号) -
@FranzGleichmann- 我已将单引号用于调试。我可以对 FieldName 进行排序,但我无法将其添加到整个 json 中。你能帮忙吗?