Если метод equals()
присутствует в классе java.lang.Object
, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор ==
проверяет, что фактические экземпляры объекта одинаковы или нет.
Пример
Рассмотрим две различные ссылочные переменные, str1
и str2
:
str1 = new String("abc");
str2 = new String("abc");
Если вы используете equals()
System.out.println((str1.equals(str2))?"TRUE":"FALSE");
, вы получите выход как TRUE
, если вы используете ==
.
System.out.println((str1==str2) ? "TRUE" : "FALSE");
Теперь вы получите вывод FALSE
в качестве вывода, потому что оба str1
и str2
указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String()
каждый новый объект создается каждый раз.
Ниже приведен код / модель, которая вам нужна:
void Main()
{
var c = new CustomData()
{
MRecordList = new List<UserQuery.Record>
{
new Record{FirstName="A",LastName="B"},
new Record{FirstName="C",LastName="D"}
},
ResponseCode = "0",
Status = ""
};
JsonConvert.SerializeObject(c).Dump();
}
public class CustomData
{
public List<Record> MRecordList { get; set; }
public string ResponseCode { get; set; }
public string Status { get; set; }
}
public class Record
{
public string FirstName { get;set;}
public string LastName { get;set;}
}
Это даст следующий Json:
{
"MRecordList": [{
"FirstName": "A",
"LastName": "B"
}, {
"FirstName": "C",
"LastName": "D"
}],
"ResponseCode": "0",
"Status": ""
}
В случае, если ваше требование следующее Json:
{
"customData": {
"MRecordList": [{
"FirstName": "A",
"LastName": "B"
}, {
"FirstName": "C",
"LastName": "D"
}],
"ResponseCode": "0",
"Status": ""
}
}
затем внесите следующие изменения в код:
public class Test
{
public CustomData customData {get;set;}
}
Test t = new Test{customData = c};
Now serialize t
Помните, что корневой тег в Json не ясен из приведенных выше примеров
Dictionary<string,Record>
, который будет отмечать элементы с идентификатором имени строки, но даже тогда каждый идентификатор должен быть другим, он не может быть «MRecord», он должен быть «quot; MRecord0 "," MRecord1 ", так далее и т. Д. – Mrinal Kamboj 13 July 2018 в 12:04