序列化后字符放到数组

//

//  ViewController.m

//  FileMessage

//各位亲 有时间可以去看看我的  “金骏家居淘宝店” http://jinjun1688.taobao.com/shop/view_shop.htm?tracelog=twddp 买时说明在我的博客看到有优惠哦 还有意外礼品赠送  真正的程序员淘宝店

//  Created by chengen on 13-7-30.

//  Copyright (c) 2013 chengen. All rights reserved.

//


#import "ViewController.h"

#import "File.pb.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

   ptro pb;

    pb.set_id(100);

    pb.set_str("hello");

    pb.add_id_num(101);

    

    

    //提前获取序列化所占空间得大小,从而避免多次分配造成的性能开销

//    int length=pb.ByteSize();

//    NSLog(@"pb_size==%d",length);

//    

//    std::string buf;

//    pb.SerializeToString(&buf);

//    NSLog(@"pb_string==%s",buf.data());

    

   int length=pb.ByteSize();

   NSLog(@"length==%d",length);

   char* buf=newchar[length];

    pb.SerializeToArray(buf, length);

   NSLog(@"buf==%s",buf);

    

//    int buf_size=strlen((const char*)buf.data());

//    NSLog(@"pb_StrSize==%d",buf_size);

//    

//    pb.ParseFromString(buf);

//    NSLog(@"pb=%d,,%s,,%d",pb.id(),pb.str().data(),pb.id_num(0));

   ptro pb1;

    pb1.ParsePartialFromArray(buf, length);

    

   NSLog(@"pb=%d,,%s,,%d",pb.id(),pb.str().data(),pb.id_num(0));

   int length1=pb.ByteSize();

   NSLog(@"pb_size==%d",length1);

   delete [] buf;

    

    

    

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


如果文本中存储了多个questionnaire对象,您可以按照以下步骤进行反序列化,将它们放入一个数组中: 1. 从文本文件中读取JSON字符串。 2. 使用Jackson的`ObjectMapper`将JSON字符串反序列化为`JsonNode`对象。 3. 遍历`JsonNode`对象,并将每个子节点反序列化为`Questionnaire`对象。 4. 将反序列化的`Questionnaire`对象添加到一个数组中。 以下是一个伪代码示例: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class QuestionnaireService { private final ObjectMapper objectMapper = new ObjectMapper(); public List<Questionnaire> loadQuestionnaires() throws IOException { // 从文件中读取JSON字符串 File file = new File("questionnaires.json"); String questionnairesJson = objectMapper.readValue(file, String.class); // 将JSON字符串反序列化为JsonNode对象 JsonNode rootNode = objectMapper.readTree(questionnairesJson); // 遍历JsonNode对象并反序列化每个子节点 List<Questionnaire> questionnaires = new ArrayList<>(); Iterator<JsonNode> iterator = rootNode.iterator(); while (iterator.hasNext()) { JsonNode node = iterator.next(); Questionnaire questionnaire = objectMapper.treeToValue(node, Questionnaire.class); questionnaires.add(questionnaire); } return questionnaires; } } ``` 请注意,上述代码中的`Questionnaire`类是您要反序列化的类。您需要确保该类可以通过Jackson序列化和反序列化,这意味着该类应该具有默认的构造函数和getter/setter方法,并且所有属性都应该具有Jackson支持的注释(例如`@JsonProperty`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值