gpt4 book ai didi

C# 列表 > JSON > Javascript

转载 作者:行者123 更新时间:2023-11-29 10:52:50 25 4
gpt4 key购买 nike

我正在对我的 ASP.Net MVC 网站上的 Controller 方法执行 AJAX 调用。该方法正在发回一些 JSON 化的自定义对象。

我在将这些 C# 对象的列表作为 Javascript 数组处理时遇到了问题,而且我对 Javascript 还很陌生,所以不明白问题出在哪里。

我有一个名为动画的对象。每个动画都有一个名为 Frames 的列表。如果我尝试传递 JSONized 框架,例如currentAnimation.Frames 到一个期望整数数组的 Javascript 方法我没有得到异常,但是接收方法没有得到它期望的整数数组,所以它也不对数据做任何事情。

这是我的 Javascript。请注意,它将“this.spriteSheet.Animations[sheet].Frames”传递给“addAnim”方法。这行不通。

for (var sheet in this.spriteSheet.Animations) {

var animation = this.addAnim(this.spriteSheet.Animations[sheet].Name, this.spriteSheet.Animations[sheet].Speed, this.spriteSheet.Animations[sheet].Frames);

if (this.flip) {
animation.flip.x = true; ;
}
}

这里是我修改过的一些 Javascript(虽然我不知道这是否是最好的解决方案,而且我仍然不知道问题出在哪里):

for (var sheet in this.spriteSheet.Animations) {

var frames = new Array();

for (var frame in this.spriteSheet.Animations[sheet].Frames) {
frames[frame] = this.spriteSheet.Animations[sheet].Frames[frame];
}

var animation = this.addAnim(this.spriteSheet.Animations[sheet].Name, this.spriteSheet.Animations[sheet].Speed, frames);

if (this.flip) {
animation.flip.x = true; ;
}
}

这是我的 Controller 操作代码:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPlay(int id)
{
// get the game that has been requested
Cherub.Common.Logic.Game game = new Common.Logic.Game();

// get the play data
Play play = game.GetPlay(id);

return Json(play, JsonRequestBehavior.AllowGet);
}

我正在使用 JQuery 的 ajax 调用来调用 Controller 操作:

$.ajax({
type: "GET",
url: ajaxUrl,
contentType: "application/json; charset=utf-8",
data: {},
dataType: "json",
success: functionSuccess,
error: functionFailure,
cache: false
});

这是从 Controller 操作返回的一小部分 JSON:

"Animations":[{"Name":"bob","Frames":[0,1,2],"Speed":0.2}]

这是我的 SpriteSheet 类

public class SpriteSheet
{
public SpriteSheet(string name)
{
Animations = new List<Animation>();

switch(name.ToLower())
{
case "sylph":
Sheet = "media/Sylph.png";
Animations.Add(new Animation { Name = "bob", Frames = new List<int> { 0, 1, 2 }, Speed = .2f });
FrameSize = new Vector2D { X = 94, Y = 125 };
break;
}
}

public string Sheet { get; set; }
public List<Animation> Animations { get; set; }
public Vector2D FrameSize { get; set; }
}

public class Animation
{
public string Name { get; set; }
public List<int> Frames { get; set; }
public float Speed { get; set; }
}

最佳答案

从描述来看,这听起来像Frames正在转换成这样的东西:

{0: 1, 1: 2, 2: 3}

...而你想要更像这样的东西:

[1, 2, 3]

这两个 javascript 对象都可以像这样访问:obj[0] ,但只有后者才是真正的数组。 做一个 for循环前者将产生 [0, 1, 2],而执行 for循环后者将产生 [1, 2, 3]。

如果我是对的,那么您需要查看用于序列化 Frames 的代码转换成一个 JSON 字符串,并让它处理 Frames作为类似数组的对象。

更新

好吧,我被难住了。一切看起来都应该正常工作才能制作 Frames javascript 中的数组。

关于C# 列表 > JSON > Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com