C# 从Web服务获取所需格式的JSON
下面是我得到的JSON数据C# 从Web服务获取所需格式的JSON,c#,javascript,json,highcharts,C#,Javascript,Json,Highcharts,下面是我得到的JSON数据 [{-------------- This should be common opening braces "legend":[{"layout":"vertical", "floating":"true", "bgColour":"#FFFFFF", "align":"right", "vertical_Align":"top", "y":"60", "x":"-60"} ] }-------------- Eliminate this brac
[{-------------- This should be common opening braces
"legend":[{"layout":"vertical",
"floating":"true",
"bgColour":"#FFFFFF",
"align":"right",
"vertical_Align":"top",
"y":"60",
"x":"-60"}
]
}-------------- Eliminate this brace
,
{-------------- Eliminate this brace
"Series":[{"Data":[14,
14,
14,
14,
18,
18,
18,
18,
17,
15,
13,
12]
}
]
}-------------- Eliminate this brace
,
{-------------- Eliminate this brace
"xAxis":[{"Categories":["Q1 / 2013",
"Q2 / 2013",
"Q3 / 2013",
"Q4 / 2013",
"Q1 / 2013",
"Q2 / 2013",
"Q3 / 2013",
"Q4 / 2013",
"Q1 / 2013",
"Q2 / 2013",
"Q3 / 2013",
"Q4 / 2013"
]}
]}--------------- This should be common closing brace
]
下面是我想要的JSON格式
{
"legend" : [ { "layout" : "vertical" },
{ "floating" : true },
{ "backgroundColor" : "#FFFFFF" },
{ "align" : "right" },
{ "verticalAlign" : "top" },
{ "y" : 60 },
{ "x" : -60 }
],
"series" : [ { "data" : [ 14,
14,
14,
14,
18,
18,
18,
18,
17,
15,
13,
12
] } ],
"xAxis" : { "categories" : [ "Q1 / 2013",
"Q2 / 2013",
"Q3 / 2013",
"Q4 / 2013",
"Q1 / 2013",
"Q2 / 2013",
"Q3 / 2013",
"Q4 / 2013",
"Q1 / 2013",
"Q2 / 2013",
"Q3 / 2013",
"Q4 / 2013"
] }
}
两者都是有效的JSON,但我想用第二种格式在highcharts中绘制图形
下面是我获取文件中第一个JSON数据的代码,如下所示
List<object> modified_listofstrings = new List<object>();
System.Web.Script.Serialization.JavaScriptSerializer jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var obj1=new{
Data=p_Value
};
var obj2 = new { Series = new[] { obj1 } };
var obj3 = new
{
layout,
floating,
bgColour,
align,
vertical_Align,
y,
x,
};
var obj4 = new { legend = new[] { obj3 } };
var obj5 = new
{
Categories=p_Name
};
var obj6 = new { xAxis = new[] { obj5 } };
modified_listofstrings.Add(obj4);
modified_listofstrings.Add(obj2);
modified_listofstrings.Add(obj6);
jSearializer.Serialize(modified_listofstrings);
List modified_listofstrings=new List();
System.Web.Script.Serialization.JavaScriptSerializer jSearializer=新的System.Web.Script.Serialization.JavaScriptSerializer();
var obj1=新{
数据=p_值
};
var obj2=new{Series=new[]{obj1};
var obj3=新
{
布局,
浮动
BGCOLOR,
排列
垂直对齐,
Y
x,,
};
var obj4=new{legend=new[]{obj3};
var obj5=新
{
类别=p_名称
};
var obj6=new{xAxis=new[]{obj5};
修改的_listofstrings.Add(obj4);
修改的_listofstrings.Add(obj2);
修改的_listofstrings.Add(obj6);
序列化(修改的字符串);
确切地说,我的传奇、系列和xAxis都被花括号包围了,我想消除它们,我该怎么做,任何帮助都将不胜感激。。而且所有图例的属性都应该用大括号括起来,如预期输出所示..在传递到serialize时,我是否在以正确的方式获取对象方面弄乱了。。?
有没有可能是我想要的…?创建类而不是将项添加到对象类型这将更有效,并生成您想要的正确json 从
公共类图例
{
公共字符串布局{get;set;}
公共bool?浮动{get;set;}
公共字符串背景颜色{get;set;}
公共字符串对齐{get;set;}
公共字符串垂直对齐{get;set;}
公共int?y{get;set;}
公共int?x{get;set;}
}
公开课系列
{
公共列表数据{get;set;}
}
公共类XAxis
{
公共列表类别{get;set;}
}
公共类根对象
{
公共列表图例{get;set;}
公共列表系列{get;set;}
公共XAxis XAxis{get;set;}
}
现在将对象添加到这个类中,最后序列化RootObject,它是您的json
复制你的json并粘贴到上面,我将在上面生成用于创建对象的类查看你想要的树…
Legend
和Series
和xAxis
是同一对象的同级属性…所以不要在服务器代码中将它们作为不同的对象分开,我试图在同一个对象中编写,但我无法这样做,我在编写代码时出错,请您以所需的方式更新代码,以便我可以知道我到底错在哪里..请..@charlietfl…我了解您的想法,谢谢…最后一个问题,你能告诉我如何在每个属性后将花括号放在图例中,也请分别回答,以便我可以将其作为答案进行检查。你可能需要再次检查结构…图例应该是一个对象,就像你在原始输出中使用的那样…查看图表上的演示site@charlietfl.. 我想要的输出,可能是图例,是一个对象,我需要在其中传递不同的属性,如布局、y、x等作为对象,然后我将如何做,预期的输出在highcharts中工作,我希望我的结果输出与highcharts中的一样。。
public class Legend
{
public string layout { get; set; }
public bool? floating { get; set; }
public string backgroundColor { get; set; }
public string align { get; set; }
public string verticalAlign { get; set; }
public int? y { get; set; }
public int? x { get; set; }
}
public class Series
{
public List<int> data { get; set; }
}
public class XAxis
{
public List<string> categories { get; set; }
}
public class RootObject
{
public List<Legend> legend { get; set; }
public List<Series> series { get; set; }
public XAxis xAxis { get; set; }
}