HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    json卡片代码生成器(json卡片代码生成器怎么用)

    发布时间:2023-04-07 17:29:45     稿源: 创意岭    阅读: 131        

    大家好!今天让小编来大家介绍下关于json卡片代码生成器的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,相关业务请拨打电话:175-8598-2043,或添加微信:1454722008

    文章目录列表:

    json卡片代码生成器(json卡片代码生成器怎么用)

    一、设计一个java接口,接收json,并且将处理结果按json的格式返回

    json说白了就是个字符串呗。

    原来用servlet怎么接受字符串参数,就怎么接受json。

    只不过这个json串一定要解析才能拿到想要的数据。

    处理完后再生成一个json串用writer也好,跳转页面也好,总之把json输出就算返回了。

    处理json你可以不必自己写代码,从网上找个json的工具包就可以,推荐jackson

    二、chart.js代码连接后台生成动态图形,应该怎么添加json代码

    是否是这样

    option = {

    color: ['#00fff6', '#006699', '#4cabce', '#e5323e'],

    tooltip: {

    trigger: 'axis',

    axisPointer: {

    type: 'shadow'

    }

    },

    textStyle:{//图例文字的样式

    color:'#dbdbdb',

    fontSize:15

    },

    calculable: true,

    xAxis: [

    {

    type: 'category',

    axisTick: {show: false},

    data: ['2014', '2015', '2016', '2017', '2018']

    }

    ],

    yAxis: [

    {

    type: 'value'

    }

    ],

    series: [

    {

    name: 'Forest',

    type: 'bar',

    color:'#006699',

    barGap: 0,

    label: labelOption,

    data: [88, 32, 91, 34, 90],

    }]

    };

    // res 为后台数据获取,假设获取为数组

    let res = [11,22,33,44,55];

    option.series[0].data = res;

    三、java怎么实现JSON打包UDP

    java实现JSON打包UDP cJSON支持在C程序中创建和解析JSON数据,其提供多种方法供C程序使用,最直接的是将cJSON.c和cJSON.h加入到C工程中

    (1) QJsonObject用于在Qt中创建JSON对象

    (2)数据传输通过UDP运行

    代码如下

    首先在pro文件中加入

    QT += network

    h文件内容:

    首先在pro文件中加入

    QT += network

    h文件内容:

    #ifndef MAINWINDOW_H

    #define MAINWINDOW_H

    #include <QMainWindow>

    #include<QtNetwork>

    namespace Ui {

    class MainWindow;

    }

    class MainWindow : public QMainWindow

    {

    Q_OBJECT

    public:

    explicit MainWindow(QWidget *parent = 0);

    ~MainWindow();

    QUdpSocket *sender;

    QByteArray byteArray;

    private slots:

    void on_pushButton_clicked();

    private:

    Ui::MainWindow *ui;

    };

    #endif // MAINWINDOW_H

    cpp文件内容:

    #include "mainwindow.h"

    #include "ui_mainwindow.h"

    #include<QJsonObject>

    #include<QJsonDocument>

    #include<QDebug>

    MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

    {

    ui->setupUi(this);

    sender = new QUdpSocket(this);

    QJsonObject rectJson;

    rectJson.insert("Type","Rectangle");

    rectJson.insert("height",42);

    rectJson.insert("widght",23);

    QJsonDocument rectJsonDoc;

    rectJsonDoc.setObject(rectJson);

    byteArray = rectJsonDoc.toJson(QJsonDocument::Compact);

    }

    MainWindow::~MainWindow()

    {

    delete ui;

    }

    void MainWindow::on_pushButton_clicked()

    {

    QHostAddress address;

    address.setAddress(QString("192.168.230.140"));

    sender->writeDatagram(byteArray.data(),byteArray.size(),

    address,4444);

    }

    程序通过端口4444,向IP为192.168.230.140的主机发送JSON数据

    C程序如下:

    {

    int sock_fd;

    char rcv_buff[512];

    struct sockaddr_in client_addr;

    struct sockaddr_in server_addr;

    int client_len;

    int rcv_num = -1;

    if ((sock_fd = socket(AF_INET, SOCK_DGRAM,0)) < 0)

    {

    perror("socket create errorn");

    exit(1);

    }

    memset(&server_addr,0,sizeof(struct sockaddr_in));

    server_addr.sin_family = AF_INET;

    server_addr.sin_port = htons(4444);

    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

    client_len = sizeof(struct sockaddr_in);

    if (bind(sock_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)) < 0)

    {

    perror("bind socket error.n");

    exit(1);

    }

    while (1)

    {

    /*zero the buff of rvbsm and hvbsm? zhp*/

    rcv_num= recvfrom(sock_fd, rcv_buff, sizeof(rcv_buff), 0, (struct sockaddr*)&client_addr, &client_len);

    if (rcv_num>0)

    {

    rcv_buff[rcv_num] = '';

    printf("rx bsm num = %dn",rcv_num);

    //printf();

    printf("%s %u says: %sn",inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port),rcv_buff);

    //parse_UDP_data(rcv_num,rcv_buff);

    if(rcv_buff != NULL)

    {

    cJSON* pJson = cJSON_Parse(rcv_buff);

    if(pJson == NULL)

    {

    printf("Json Parse failed.n");

    return 0;

    }

    cJSON* pSub1 = cJSON_GetObjectItem(pJson,"Type");

    cJSON* pSub2 = cJSON_GetObjectItem(pJson,"height");

    cJSON* pSub3 = cJSON_GetObjectItem(pJson,"widght");

    if(pSub1!=NULL)

    {

    printf("Type : %sn", pSub1->valuestring);

    }

    if(pSub2!=NULL)

    {

    printf("height : %dn", pSub2->valueint);

    }

    if(pSub3!=NULL)

    {

    printf("widght : %dn", pSub3->valueint);

    }

    }

    }

    else

    {

    perror("recv BSM errorn");

    break;

    }

    }

    close(sock_fd);

    }

    编译C程序:gcc -I. -lm -o rencode *.c

    由于cJSON使用了标准数学库,所以在编译中需链接其库文件-lm;

    在IP为192.168.230.140的Linux服务器中执行./rencode

    输出结果为:

    四、如何让Jackson JSON生成的数据包含的中文以unicode方式编码

    Jackson JSON其实在默认设置下已经具备了对Unicode编码的JSON数据进行解析。所欠缺的就是在序列化对象时缺少相应的步骤。好在Jackson JSON框架允许我们自定义序列化方法。那么我们就来写一个序列化类:

    复制代码代码如下:

    import java.io.IOException;

    import org.codehaus.jackson.JsonGenerationException;

    import org.codehaus.jackson.JsonGenerator;

    import org.codehaus.jackson.JsonProcessingException;

    import org.codehaus.jackson.impl.JsonWriteContext;

    import org.codehaus.jackson.map.JsonSerializer;

    import org.codehaus.jackson.map.SerializerProvider;

    import org.codehaus.jackson.util.CharTypes;

    public class StringUnicodeSerializer extends JsonSerializer<String> {

    private final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();

    private final int[] ESCAPE_CODES = CharTypes.get7BitOutputEscapes();

    private void writeUnicodeEscape(JsonGenerator gen, char c) throws IOException {

    gen.writeRaw('\\');

    gen.writeRaw('u');

    gen.writeRaw(HEX_CHARS[(c >> 12) & 0xF]);

    gen.writeRaw(HEX_CHARS[(c >> 8) & 0xF]);

    gen.writeRaw(HEX_CHARS[(c >> 4) & 0xF]);

    gen.writeRaw(HEX_CHARS[c & 0xF]);

    }

    private void writeShortEscape(JsonGenerator gen, char c) throws IOException {

    gen.writeRaw('\\');

    gen.writeRaw(c);

    }

    @Override

    public void serialize(String str, JsonGenerator gen,

    SerializerProvider provider) throws IOException,

    JsonProcessingException {

    int status = ((JsonWriteContext) gen.getOutputContext()).writeValue();

    switch (status) {

    case JsonWriteContext.STATUS_OK_AFTER_COLON:

    gen.writeRaw(':');

    break;

    case JsonWriteContext.STATUS_OK_AFTER_COMMA:

    gen.writeRaw(',');

    break;

    case JsonWriteContext.STATUS_EXPECT_NAME:

    throw new JsonGenerationException("Can not write string value here");

    }

    gen.writeRaw('"');//写入JSON中字符串的开头引号

    for (char c : str.toCharArray()) {

    if (c >= 0x80){

    writeUnicodeEscape(gen, c); // 为所有非ASCII字符生成转义的unicode字符

    }else {

    // 为ASCII字符中前128个字符使用转义的unicode字符

    int code = (c < ESCAPE_CODES.length ? ESCAPE_CODES[c] : 0);

    if (code == 0){

    gen.writeRaw(c); // 此处不用转义

    }else if (code < 0){

    writeUnicodeEscape(gen, (char) (-code - 1)); // 通用转义字符

    }else {

    writeShortEscape(gen, (char) code); // 短转义字符 (\n \t ...)

    }

    }

    }

    gen.writeRaw('"');//写入JSON中字符串的结束引号

    }

    }

    这个序列化类将要对应用中所有使用Jackson JSON的地方全都用一种方法来处理字符串类型。光有了方法还不行,还要对它进行注册。让Jackson JSON在序列化对象的时候使用刚刚定义好的方法:

    复制代码代码如下:

    if (objectMapper== null){

    objectMapper= new ObjectMapper();

    //当找不到对应的序列化器时 忽略此字段

    objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);

    //使Jackson JSON支持Unicode编码非ASCII字符

    CustomSerializerFactory serializerFactory= new CustomSerializerFactory();

    serializerFactory.addSpecificMapping(String.class, new StringUnicodeSerializer());

    objectMapper.setSerializerFactory(serializerFactory);

    //支持结束

    }

    接下来我们来做一个测试用的对象,验证我们的代码:

    复制代码代码如下:

    import java.util.Date;

    import net.csdn.blog.chaijunkun.util.DateDeserializer;

    import net.csdn.blog.chaijunkun.util.DateSerializer;

    import net.csdn.blog.chaijunkun.util.DateTimeDeserializer;

    import net.csdn.blog.chaijunkun.util.DateTimeSerializer;

    import org.codehaus.jackson.annotate.JsonPropertyOrder;

    import org.codehaus.jackson.map.annotate.JsonDeserialize;

    import org.codehaus.jackson.map.annotate.JsonSerialize;

    @JsonPropertyOrder(alphabetic= false)

    public class DemoObj {

    private Integer sid;

    private String stuName;

    private Boolean sex;

    @JsonSerialize(using= DateSerializer.class)

    @JsonDeserialize(using= DateDeserializer.class)

    private Date birthday;

    @JsonSerialize(using= DateTimeSerializer.class)

    @JsonDeserialize(using= DateTimeDeserializer.class)

    private Date logTime;

    //Getters and Setters

    }

    从代码上可以看出,我们并没有对String类型的属性强制指定用何种序列与反序列方法。然后我们来构造测试用例:

    复制代码代码如下:

    import java.text.SimpleDateFormat;

    import java.util.Calendar;

    import java.util.Date;

    import net.csdn.blog.chaijunkun.json.DemoObj;

    import net.csdn.blog.chaijunkun.util.JSONUtil;

    import org.apache.log4j.Logger;

    public class JSONTest {

    private static Logger logger= Logger.getLogger(JSONTest.class);

    private static String json= "{\"sid\":2,\"stuName\":\"\u6C5F\u5357Style\",\"sex\":true,\"birthday\":\"2012-07-15\",\"logTime\":\"2012-12-04 19:22:36\"}";

    public static void main(String[] args) {

    DemoObj objSrc= new DemoObj();

    objSrc.setSid(1);

    objSrc.setStuName("鸟叔");

    objSrc.setSex(true);

    Calendar calendar= Calendar.getInstance();

    calendar.set(1977, Calendar.DECEMBER, 31, 0, 0, 0);

    objSrc.setBirthday(calendar.getTime());

    objSrc.setLogTime(new Date());

    logger.info(String.format("转换为JSON后的数据:%s", JSONUtil.toJSON(objSrc)));

    DemoObj objDes= JSONUtil.fromJSON(json, DemoObj.class);

    if(objDes==null){

    logger.info("反序列化失败");

    }else{

    logger.info("反序列化成功");

    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    logger.info(String.format("标识:%d", objDes.getSid()));

    logger.info(String.format("姓名:%s", objDes.getStuName()));

    logger.info(String.format("性别:%s", objDes.getSex()==true?"男":"女"));

    logger.info(String.format("生日:%s", sdf.format(objDes.getBirthday())));

    logger.info(String.format("登录日期:%s", sdf.format(objDes.getLogTime())));

    }

    }

    }

    看一下输出:

    复制代码代码如下:

    转换为JSON后的数据:{"sid":1,"stuName":"\u9E1F\u53D4","sex":true,"birthday":"1977-12-31","logTime":"2012-12-04 19:31:57"}

    反序列化成功

    标识:2

    姓名:江南Style

    性别:男

    生日:2012-07-15 00:00:00

    登录日期:2012-12-04 19:22:36

    我们看到,已经成功将中文字符显示成为了Unicode编码的数据。同样,我们之前构造的Unicode编码的数据,在不经过任何修改的情况下成功显示出来了。

    细心的朋友也许观察到了,在测试用的对象定义代码中,针对同样Date类型的属性“birthday”和“logTime”,我们指定了不同的序列化与反序列化方法。让我们来看烂这两个有什么不同:

    复制代码代码如下:

    import java.io.IOException;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import org.codehaus.jackson.JsonGenerator;

    import org.codehaus.jackson.JsonProcessingException;

    import org.codehaus.jackson.map.JsonSerializer;

    import org.codehaus.jackson.map.SerializerProvider;

    public class DateTimeSerializer extends JsonSerializer<Date> {

    @Override

    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)

    throws IOException, JsonProcessingException {

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String formattedDate= sdf.format(date);

    gen.writeString(formattedDate);

    }

    }

    复制代码代码如下:

    import java.io.IOException;

    import java.text.SimpleDateFormat;

    import java.util.Calendar;

    import java.util.Date;

    import org.codehaus.jackson.JsonParser;

    import org.codehaus.jackson.JsonProcessingException;

    import org.codehaus.jackson.map.DeserializationContext;

    import org.codehaus.jackson.map.JsonDeserializer;

    public class DateTimeDeserializer extends JsonDeserializer<Date> {

    @Override

    public Date deserialize(JsonParser parser, DeserializationContext context)

    throws IOException, JsonProcessingException {

    String dateFormat= "yyyy-MM-dd HH:mm:ss";

    SimpleDateFormat sdf= new SimpleDateFormat(dateFormat);

    try{

    String fieldData= parser.getText();

    return sdf.parse(fieldData);

    }catch (Exception e) {

    Calendar ca= Calendar.getInstance();

    ca.set(1970, Calendar.JANUARY, 1, 0, 0, 0);

    return ca.getTime();

    }

    }

    }

    复制代码代码如下:

    import java.io.IOException;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import org.codehaus.jackson.JsonGenerator;

    import org.codehaus.jackson.JsonProcessingException;

    import org.codehaus.jackson.map.JsonSerializer;

    import org.codehaus.jackson.map.SerializerProvider;

    public class DateSerializer extends JsonSerializer<Date> {

    @Override

    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)

    throws IOException, JsonProcessingException {

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

    String formattedDate= sdf.format(date);

    gen.writeString(formattedDate);

    }

    }

    复制代码代码如下:

    import java.io.IOException;

    import java.text.SimpleDateFormat;

    import java.util.Calendar;

    import java.util.Date;

    import org.codehaus.jackson.JsonParser;

    import org.codehaus.jackson.JsonProcessingException;

    import org.codehaus.jackson.map.DeserializationContext;

    import org.codehaus.jackson.map.JsonDeserializer;

    public class DateDeserializer extends JsonDeserializer<Date> {

    @Override

    public Date deserialize(JsonParser parser, DeserializationContext context)

    throws IOException, JsonProcessingException {

    String dateFormat= "yyyy-MM-dd";

    SimpleDateFormat sdf= new SimpleDateFormat(dateFormat);

    try{

    String fieldData= parser.getText();

    return sdf.parse(fieldData);

    }catch (Exception e) {

    Calendar ca= Calendar.getInstance();

    ca.set(1970, Calendar.JANUARY, 1, 0, 0, 0);

    return ca.getTime();

    }

    }

    }

    以上就是小编对于json卡片代码生成器问题和相关问题的解答了,如有疑问,可拨打网站上的电话,或添加微信。


    推荐阅读:

    pjsk角色资料在哪(pjsk角色养成)

    js排行榜(js排行榜实现)

    pjsk猫

    贷款app排行榜(贷款app排行榜前十名长期)

    音乐排行榜下载(音乐排行榜下载网站)