JavaScriptSerializer (). Serialize (objeto Entity Framework)
-
20-09-2019 - |
Pregunta
Puede ser, no es tan problemático para usted. pero estoy tratando primera vez con la serialización JSON. y también leer otros artículos en stackowerflow.
He creado Marco de la entidad modelo de datos. a continuación, por el método de obtener todos los datos de objeto:
private uqsEntities _db = new uqsEntities();
//get all data from table sysMainTableColumns where tableName=paramtableName
public List<sysMainTableColumns> getDataAboutMainTable(string tableName)
{
return (from column in _db.sysMainTableColumns
where column.TableName==tableName
select column).ToList();
}
mi servicio web:
public string getDataAboutMainTable()
{
penta.DAC.Tables dictTable = new penta.DAC.Tables();
var result = dictTable.getDataAboutMainTable("1");
return new JavaScriptSerializer().Serialize(result);
}
y jQuery método ajax
$('#loadData').click(function() {
$.ajax({
type: "POST",
url: "WS/ConstructorWS.asmx/getDataAboutMainTable",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#jsonResponse").html(msg);
var data = eval("(" + msg + ")");
//do something with data
},
error: function(msg) {
}
});
});
falla (de fairbug):
missing ] after element list [Break on this error] var data = eval("(" + msg + ")");
Respuesta ajax (por Firebug si quito var data = eval("(" + msg + ")")
):
{"d":"[{\"ID\":1,\"TableName\":\"1\",\"Name\":\"d\",\"FullName\":\"f\",\"Type\":\"nvarchar(50)\",\"MeasurementUnit\":\"t \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":1}],\"IsTemporary\":false}},{\"ID\":2,\"TableName\":\"1\",\"Name\":\"e\",\"FullName\":\"e\",\"Type\":\"int\",\"MeasurementUnit\":\"r \",\"EntityState\":2,\"EntityKey\":{\"EntitySetName\":\"sysMainTableColumns\",\"EntityContainerName\":\"uqsEntities\",\"EntityKeyValues\":[{\"Key\":\"ID\",\"Value\":2}],\"IsTemporary\":false}}]"}
problema con datos , el código no existe. y yo creo que no soy uso JavaScriptSerializer (). Serialize () método muy bien.
Por favor, dime, lo que es un gran error que hice en el código C #?
Solución
- No es necesario
eval
. jQuery hace por usted cuando se especificadataType: "json"
- Es una mala idea para serializar entidades directamente como
JavaScriptSerializer
va a morir si uno pasa a contener una referencia circular. - No se olvide del
d
! Que se inserta por servicios WCF para trabajar en torno a un agujero de seguridad en algunos navegadores cuando el objeto raíz es una matriz.
Otros consejos
¿Ha tratado de depuración con Firebug o Fiddler para ver lo que el contenido de JSON parece?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow