我试图跌破$ C $下创建JSON code,code做工精细。
我是从数据库加载值,但是最后的值只有我有没有添加一个输出.remaining值。
DataTable的DT =新的DataTable();
VAR objectToSerialize =新RootObject();
SqlConnection的连接=新的SqlConnection(ConfigurationManager.ConnectionStrings [DBConnection的]的ToString());
SqlCommand的命令=新的SqlCommand(选择IFlicksMenu *,连接);
SqlDataAdapter的DA =新的SqlDataAdapter(命令);
da.Fill(DT);
的foreach(在dt.Rows的DataRow博士)
{
的foreach(COL的DataColumn在dt.Columns)
{
objectToSerialize.contacts =新的名单,其中,续>
{
新续
{
SNO =博士[电影。toString()方法,
NAME =博士[画廊。toString()方法,
地址=博士[明星。的ToString()
性别=博士[视频。toString()方法,
EM =博士[EM]的ToString()
手机=新电话{移动=博士[phonone。的ToString()}
},
};
}
JavaScriptSerializer串行=新JavaScriptSerializer();
回复于(serializer.Serialize(新{项目= objectToSerialize.contacts}));
}
输出
{
项目:[
{
电话:{
手机:99528748474
},
SNO:女主角,
名:女主角,
新兴市场:SCD
地址:女主角,
性别:预告片
}
]
}
解决方案
您重新联系人
因为当你想在循环的开始创造和不断增加每个项目到列表:
VAR项目=新的名单,其中,续>();
的foreach(在dt.Rows的DataRow博士)
{
items.Add(新续{
SNO =博士[电影。toString()方法,
NAME =博士[画廊。toString()方法,
地址=博士[明星。的ToString()
性别=博士[视频。toString()方法,
EM =博士[EM]的ToString()
手机=新电话{移动=博士[phonone。的ToString()}
});
}
objectToSerialize.contacts =项目;
你也需要删除内部循环
的foreach(DataColumn的山坳中dt.Columns)
因为这将有效地列数乘以行数
i tried below code for create json code ,code working fine.
i was load value from db,but last value only i got a output .remaining value not added..
DataTable dt = new DataTable();
var objectToSerialize = new RootObject();
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());
SqlCommand command = new SqlCommand("select * from IFlicksMenu", connection);
SqlDataAdapter da = new SqlDataAdapter(command);
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
objectToSerialize.contacts = new List<Cont>
{
new Cont
{
sno = dr["Cinema"].ToString(),
name = dr["Gallery"].ToString(),
address = dr["star"].ToString(),
gender = dr["video"].ToString(),
em = dr["em"].ToString(),
phone=new Phone { mobile=dr["phonone"].ToString() }
},
};
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.Write(serializer.Serialize(new { item = objectToSerialize.contacts }));
}
output is
{
"item":[
{
"phone":{
"mobile":"99528748474"
},
"sno":"ACTRESS",
"name":"ACTRESS",
"em":"scd",
"address":"ACTRESS",
"gender":"TRAILER"
}
]
}
解决方案
You recreate contacts
for each item when you want create in on the beginning of the loop and keep adding to the list:
var items = new List<Cont>();
foreach (DataRow dr in dt.Rows)
{
items.Add(new Cont{
sno = dr["Cinema"].ToString(),
name = dr["Gallery"].ToString(),
address = dr["star"].ToString(),
gender = dr["video"].ToString(),
em = dr["em"].ToString(),
phone = new Phone{ mobile=dr["phonone"].ToString() }
});
}
objectToSerialize.contacts = items;
also you need to remove internal loop
foreach (DataColumn col in dt.Columns)
as it will effectively multiply number of rows by number of columns