JSON错误:期待状态'element'..遇到'text',名称为'',namespace''

时间:2015-09-09 08:53:54

标签: c# jquery json

我正在尝试将Ajax请求中的Json数据发送到一个安静的Web服务。 这不是我第一次这样做,但这次类型更复杂。

这是网络服务方法:

InstanceServiceResponse<BlogPostData> CreatePost(ObjectCollection ressources);

对象ObjectCollection定义如下:

public class ObjectCollection : ISerializable, IEnumerable
    {
        Dictionary<string, object> objectsValue;

        public ObjectCollection()
        {
            objectsValue = new Dictionary<string, object>();
        }

        public ObjectCollection(IDictionary<string, object> parameters)
        {
            objectsValue = new Dictionary<string, object>(parameters);
        }

        ...
        ...
   }

ressources参数的创建方式如下:

function GetRessources() {
    var Ressources = [];
    $.each($("#ressources-holder > div"), function (key, value) {
        Ressources.push( { "name": $(value).children().first().text().slice(0, -1), "id": $(value).attr('id') } );
    });
    return Ressources;
}

Json创建的是:

[{"name":"tototititata","id":"107875"},{"name":"test","id":"107877"}]

关于错误和我在其他与同一问题相关的SO帖子中看到的内容,似乎是因为参数的名称。

但是,这就是为什么我发布一个新问题,我的类型(ObjectCollection)没有任何公共字段,我可以“绑定”我的参数。

现在我有点黑了,任何帮助和建议都会非常感激。

修改

由于我没有找到任何适用的解决方案,我使用旁路。 我发送Dictionary<string, object>就像这样:

function GetRessources() {
    var Ressources = [];
    $.each($("#ressources-holder > div"), function (key, value) {
        Ressources.push({ "Key": $(value).children().first().text().slice(0, -1), "Value": $(value).attr('id') });
    });
    return Ressources;
}

然后服务器端用它创建一个新的ObjectCollection

这对我认为的任何人都无济于事,但我会为后人保留这个问题。

1 个答案:

答案 0 :(得分:0)

为了正确发送json对象,该对象必须与其绑定的字段相关。

意思是,如果你想在你的json请求中发送名字,你必须定义一个'name'字段并在json请求中发送它,否则你将无法成功传递它。

你需要做的是尝试创建相关字段,以便与json正确地工作,创建实体或甚至尝试在json集合实体中工作。

或者,不是使用json push,而是尝试使用json ajax请求,看看它是如何工作的。

无论如何,就我所见,最快的解决方案就是尽可能多地与公共领域合作。